WO2007095593A2 - Diagnostic functions in an in-line device - Google Patents

Diagnostic functions in an in-line device Download PDF

Info

Publication number
WO2007095593A2
WO2007095593A2 PCT/US2007/062162 US2007062162W WO2007095593A2 WO 2007095593 A2 WO2007095593 A2 WO 2007095593A2 US 2007062162 W US2007062162 W US 2007062162W WO 2007095593 A2 WO2007095593 A2 WO 2007095593A2
Authority
WO
WIPO (PCT)
Prior art keywords
data
network
module
frame
diagnostic device
Prior art date
Application number
PCT/US2007/062162
Other languages
French (fr)
Other versions
WO2007095593A3 (en
Inventor
Kiranmai Vedanabhatla
Geoffrey Hibbert
Roumel R. Garcia
George A. Bullis
Andrew J. Milne
Steven R. Klotz
Original Assignee
Finisar Corporation
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 Finisar Corporation filed Critical Finisar Corporation
Priority to EP07757009A priority Critical patent/EP1989826A4/en
Publication of WO2007095593A2 publication Critical patent/WO2007095593A2/en
Publication of WO2007095593A3 publication Critical patent/WO2007095593A3/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/18Protocol analysers

Definitions

  • Computer and data communications networks continue to proliferate due to declining costs, increasing performance of computer and networking equipment, and increasing demand for communication bandwidth.
  • Communications networks ⁇ including wide area networks (“WANs”), local area networks (“LANs”), metropolitan area networks (“MANs”), and storage area networks (“SANS”) ⁇ allow increased productivity and use of distributed computers or stations through the sharing of resources, the transfer of voice and data, and the processing of voice, data and related information at the most efficient locations.
  • network applications such as electronic mail, voice and data transfer, host access, and shared and distributed databases are increasingly used as a means to increase user productivity. This increased demand, together with the growing number of distributed computing resources, has resulted in a rapid expansion of the number of installed networks.
  • GE gigabit Ethernet
  • FDDI Fiber Distributed Data Interface
  • FC Fibre Channel
  • SONET Synchronous Optical Network
  • SAS Serial Attached SCSI
  • SATA Serial Advanced Technology Attachment
  • InfiniBand networks typically conform to one of a variety of established standards, or protocols, which set forth rules that govern network access as well as communications between and among the network resources.
  • networks utilize different cabling systems, have different characteristic bandwidths and typically transmit data at different speeds. Network bandwidth, in particular, has been the driving consideration behind much of the advancements in the area of high speed communication systems, methods and devices.
  • the problems generally experienced in network communications can take a variety of forms and may occur as a result of a variety of different circumstances. Examples of circumstances, conditions and events that may give rise to network communication problems include the transmission of unnecessarily small frames of information, inefficient or incorrect routing of information, improper network configuration and superfluous network traffic, to name just a few. Such problems are aggravated by the fact that networks are continually changing and evolving due to growth, reconfiguration and introduction of new network topologies and protocols. Moreover, new network interconnection devices and software applications are constantly being introduced and implemented. Circumstances such as these highlight the need for effective, reliable, and flexible diagnostic mechanisms.
  • Embodiments disclosed herein relate to a network diagnostic device or component that is placed in-line between two nodes in a network to compress network data traffic to preserve available memory space.
  • the network diagnostic component receives a low speed signal pattern from a first node for communication with a second node.
  • the low speed signal pattern may be received by a receive module.
  • the low speed signal pattern includes at least a first signal component.
  • the network diagnostic component records the first signal component in a memory.
  • the network diagnostic component also records in the memory a representation of at least one subsequent signal component that is the same as the first signal component.
  • the network diagnostic component may then record the length of time of the first signal component and the subsequent signal component in the memory.
  • Embodiments further disclosed herein relate to a network diagnostic device or component that is placed in-line between two nodes in a network to perform a comparison operation on any specified portion of a data frame.
  • the network diagnostic component receives a network data stream from a first node for communication with a second node.
  • the network data stream includes one or more data units.
  • the network diagnostic component uses a starting address and an ending address that specify where in the data frame a comparison operation should begin and end at respectively.
  • the network diagnostic device further uses a match template that specifies a particular condition for comparison.
  • a comparison operation may then be performed by searching for a data unit in the portion of the data frame specified by the beginning and ending addresses that at least partially matches the comparison condition of the match template. .
  • the data unit may occur in any location within the specified portion.
  • Embodiments disclosed herein also relate to a network diagnostic device or component that is placed in-line between two nodes in a network to compress a random data signal.
  • the network diagnostic component receives a network data frame from the first node for communication with the second node.
  • the network data frame may include a plurality of data units interspersed with one or more non-data units that interrupt the proximity and flow of the data units.
  • the network diagnostic unit may then reorder the network data frame by removing or moving at least some of the non-data units that are interspersed with the plurality of data units.
  • the reordered network data frame may then be interpreted by other components of the network diagnostic component.
  • Figure 1 illustrates a block diagram of a network including a network diagnostic component placed in-line between two nodes;
  • Figure 2 illustrates a detailed view of a particular embodiment of the network diagnostic component of Figure 1;
  • Figure 3 illustrates a method for a network diagnostic component placed in-line between two nodes to compress an initialization signal to preserve available memory space
  • Figure 5 illustrates a detailed view of a particular embodiment of the network diagnostic component of Figure 1;
  • Figure 6 illustrates a method for a network diagnostic component placed in-line between two nodes to perform a comparison operation on any specified portion of a data frame
  • Figure 7 illustrates a particular embodiment of the network diagnostic component of Figure 1;
  • FIG. 8 illustrates a frame compaction module in accordance with embodiments discloses herein;
  • Figure 9 illustrates a method for a network diagnostic component placed in-line between two nodes to reorder or compact network traffic
  • Figure 10 illustrates a specific method for reordering network traffic
  • Embodiments disclosed herein relate to a network diagnostic device or component that is placed in-line between two nodes in a network to compress network data traffic to preserve available memory space.
  • the network diagnostic component receives a low speed signal pattern from a first node for communication with a second node.
  • the low speed signal pattern may be received by a receive module.
  • the low speed signal pattern includes at least a first signal component.
  • the network diagnostic component records the first signal component in a memory.
  • the network diagnostic component also records in the memory a representation of at least one subsequent signal component that is the same as the first signal component.
  • the network diagnostic component may then record the length of time of the first signal component and the subsequent signal component in the memory.
  • the network diagnostic component uses a starting address and an ending address that specify where in the data frame a comparison operation should begin and end at respectively.
  • the network diagnostic device further uses a match template that specifies a particular condition for comparison.
  • the network diagnostic unit may then reorder the network data frame by removing or moving at least some of the non-data units that are interspersed with the plurality of data units.
  • the reordered network data frame may then be interpreted by other components of the network diagnostic component.
  • the embodiments disclosed herein may be practiced in networking systems, including the testing of high speed data transmission systems and components. Embodiments described herein may also be used in other contexts unrelated to testing systems and components and/or unrelated to high speed data transmission.
  • An example networking system will first be described. Then, the operation in accordance with specific embodiments disclosed herein will be described. Note that as used herein the terms “first”, “second” and so forth are not intended to imply sequential ordering, but rather are intended to distinguish one element from another.
  • FIG. 1 is a block diagram of a networking system 100.
  • the networking system 100 may include one or more nodes 110, 120, which communicate with each other via a network.
  • a "node” includes, but is not limited to, a server or host; a client or storage device; a switch; a hub; a router; all or a portion of a SAN fabric; a diagnostic device; and any other device or system, or combination thereof, that may be coupled to a network and that may receive and/or monitor a signal or data over at least a portion of a network, that may send and/or generate a signal or data over at least a portion of a network, or both.
  • a signal (such as, an electrical signal, an optical signal, and the like) may be used to send and/or receive network messages over at least a portion of a network.
  • a "network message” or “network data stream” includes, but is not limited to, a packet; a datagram; a frame; a data frame; a command frame; an ordered set; any unit of data capable of being routed (or otherwise transmitted) through a computer network; and the like.
  • a network message or data stream may comprise transmission characters used for data purposes, protocol management purposes, code violation errors, and the like.
  • an ordered set may include, a Start of Frame (“SOF”), an End of Frame (“EOF”), an Idle, a Receiver_Ready (“R_RDY”), a Loop Initialization Primitive (“LIP”), an Arbitrate (“ARB”), an Open (“OPN”), and Close (“CLS”) ⁇ such as, those used in certain embodiments of Fibre Channel.
  • SOF Start of Frame
  • EEF End of Frame
  • R_RDY Receiver_Ready
  • LIP Loop Initialization Primitive
  • ARB Arbitrate
  • OPN Open
  • CCS Close
  • Nodes may communicate using suitable network protocols, including, but not limited to, serial protocols, physical layer protocols, channel protocols, packet-switching protocols, circuit-switching protocols, Ethernet, Fast Ethernet, Gigabit Ethernet, 10 Gigabit Ethernet, Fibre Channel, Fibre Channel Arbitrated Loop (“FC-AL”), Small Computer System Interface (“SCSI”), High Performance Parallel Interface (“HIPPI”), Serial Attached SCSI (“SAS”), Serial ATA (“SATA”), Serial SCSI Architecture (“SSA”), and the like.
  • protocol is defined to mean at least the speed at which the nodes communicate and the communication rules that are used by the nodes when communicating.
  • the nodes 110,120 are preferably SAS/SATA nodes.
  • SAS/SATA nodes includes nodes that are SAS compatible, nodes that are SATA compatible, and nodes that are both SAS compatible and SATA compatible. It will be appreciated, however, that the nodes 110,120 need not be SATA/SATA nodes and that the nodes 110,120 may be other types of nodes that are compatible with other types of network protocols.
  • any reference to a node as being a host or initiator node and another node as being a target node is for illustration only. It is contemplated that nodes 110, 120 can be both host and target nodes as circumstances warrant.
  • the network diagnostic component 130 may send and receive signals or data. Accordingly, using a signal, the network diagnostic component 130 may receive one or more network messages from a node, send one or more network messages to a node, or both. For example, the network diagnostic component 130 may receive one or more network messages sent between the nodes 110,120. The network diagnostic component 130 may also retransmit those network messages. In particular, the network diagnostic component 130 may receive network messages sent from the node 110 and then retransmit them to the node 120. Also, the network diagnostic component 130 may receive network messages sent from the node 120 and then retransmit them to the node 110.
  • in-line denotes that a network diagnostic component is configured to have the network messages sent between two nodes routed to it so that the network messages are available to the network diagnostic component.
  • the network diagnostic component may be directly in-line or it may be indirectly in-line through the use of a tap or like device.
  • the network diagnostic component may have the network messages routed to it in any reasonable way.
  • the network diagnostic component 130 can modify the signal used to transmit the network messages. For example, the network diagnostic component 130 may digitally retime the signal, may modify the content of the messages themselves, or both. It will be appreciated that the network diagnostic component 130 may modify the signal in other desired ways. Because it is not always desirable to have the network diagnostic component 130 modify the signal, the network diagnostic component 130 may be selectively configured to modify (or not to modify) the signal used to transmit the network messages.
  • the network diagnostic component 130 may also perform a variety of network diagnostic functions using network messages sent between the nodes 110,120. In performing some of these diagnostic functions, the network diagnostic component 130 may be configured to be passive to the network messages. If desired, the network diagnostic component 130 may receive at least some of the network messages, and may transmit some or all of the received traffic. In performing other diagnostic functions, the network diagnostic component 130 may be configured to modify some or all of the network traffic.
  • nodes 110 and node 120 may have periods of time when they communicate using a low speed signal pattern.
  • the low speed signal patterns include full-amplitude data burst periods and zero amplitude common mode voltage periods where no data is transmitted.
  • Such data patterns are "low speed" in the sense that they as generally slower than regular data transmission.
  • a typical example of such a low speed signal pattern is the Out-of-Band signals common in such protocols as SAS and SATA.
  • SAS and SATA Serial Advanced Technology Attachment
  • nodes 110 and 120 undergo an initialization process prior to communicating with each other.
  • This initialization process allows the two nodes to agree upon the protocol (e.g., speed and/or communication rules) that the nodes will utilize while communicating with each other.
  • the protocol e.g., speed and/or communication rules
  • many nodes are configured to use both the SAS protocol and the SATA protocol. In such cases, it is often necessary during the initialization process for the nodes to specify whether they will be communicating using the SAS protocol or the SATA protocol.
  • OOB signals constitute defined periods of DC-Idle (common mode voltage) followed by defined periods of Data bursts. The defined periods are specified by the SAS and SATA protocols.
  • the Data burst period is the same for all the OOB signals.
  • the DC-Idle period varies and is used to differentiate between the different kinds of OOB signals.
  • the Data bursts and DC-Idles are defined in terms of an OOB Interval (OOBI), which at 1.5 Gigabits per second (Gbps) is nominally 666.666 picoseconds.
  • OOBI OOB Interval
  • the time periods for the Data bursts and DC-Idles of various SAS and SATA OOB signals are summarized in Table 1.
  • a graphical representation of the Data burst and DC-Idle portions of the various SAS and SATA OOB signals is illustrated in Figure 4.
  • Node 110 when desiring to utilize the SAS protocol, may send OOB signals designated as COMINIT/COMRESET (COMINIT/COMRESET are electrically identical signals) and COMSAS to node 120. As shown in Table 1 and Figure 4, these OOB signals have defined Data burst periods and defined DC-idle periods that indicate the signal type. Upon receipt of these OOB signals, node 120 will be informed that node 110 desires to communicate using the SAS protocol. The node 120 may then respond appropriately. In similar manner, if node 110 wishes to utilize the SATA protocol, it may send the COMINIT/COMRESET OOB signal and a COMWAKE OOB signal to node 120.
  • COMINIT/COMRESET are electrically identical signals
  • COMSAS are electrically identical signals
  • node 110 may not know ahead of time which protocol node 120 may support. In those instances, node 110 may send all of the OOB signals to node 120. Node 120 will then recognize the OOB signals for the protocol that it is configured at that particular time to support and will respond to node 110 appropriately.
  • the speed of communication is determined during a speed negotiation sequence that typically follows the OOB sequence. This consists of different speed negotiation windows that often begin at the lowest possible speed and then continue to higher speeds. For example, SAS/SATA nodes typically communicate at 1.5 Gbps, 3 Gbps, 6 Gbps, etc.
  • Figure 2 shows that the embodiment of network diagnostic component 130 includes an Out-of-Band (OOB)/speed negotiation state machine 140, a trace formatting/compression engine 150, a capture memory 160, and a timestamp generator 170.
  • Capture memory 160 may be a buffer in some embodiments and may also be any other type of suitable non-persistent and persistent memory source in other embodiments.
  • the OOB/Speed Negotiation State Machine 140 then generates Dword aligned data 145 that represents the DC-idles and Data burst Dwords that are detected from OOB sequence 180.
  • Dword aligned data 145 includes an ellipses 146 that represents that any number of DC-idles and Data burst Dwords may be included in OOB sequence 180.
  • the Dword aligned data 145 is then passed to the trace formatting /compression engine 150.
  • the trace formatting/compression engine 150 may be implemented as software, hardware, or any combination of software and hardware.
  • the trace formatting/compression engine 150 is configured to compress the DC-Idles and Data burst Dwords of Dword aligned data 145 by counting the the DC-Idles and Data burst Dwords and providing a count record to capture memory 160 as will be explained.
  • the trace formatting/compression engine 150 is also configured provide for the insertion of a timestamp into the capture memory.
  • Timestamp generator 170 When the trace formatting/compression engine 150 reads the first Dword or DC Idle, it causes timestamp generator 170, which may be a counter in some embodiments, to begin counting. Timestamp generator 170 continues to count until trace formatting/compression engine 150 reads a new Dword or DC Idle. The resulting timestamp identifies the length of time from the first Dword or DC Idle to the new Dword or DC Idle inserted by trace formatting/compression engine 150 in capture memory 160 after the repeat count record gets written. The timestamp allows the accurate recreation of the DC- Idles and Data bursts that happened on the line. Use of the timestamp also allows a user of network diagnostic component 130 to ascertain how long the Data burst and DC-Idle periods lasted.
  • the new Dword or DC Idle is also written by trace formatting/compression engine 150 into the capture memory. Any subsequent Dwords or DC Idles that are the same will be counted and written into the memory 160 as described. A timestamp of this length of time will also be written as described. This process may continue any time a Dword or DC Idle that is different from a preceding Dword or DC Idle is read by trace formatting/compression engine 150.
  • trace formatting/compression engine 150 A specific example will now be described. Note that the numbers of Dwords or DC Idles used in the example is for illustration only and should not be used to limit the scope of the appended claims.
  • Dword aligned data 145 includes 5 DC-Idles, labeled as DCI, followed by six Data burst Dwords, labeled as Burst.
  • Trace formatting/compression engine 150 reads the first DCI and writes it into capture memory 160 as represented by 161. Since there are four DCIs that follow, trace formatting/compression engine 150 records 4 repeat counts from compression counter 151 in the capture memory as represented by 162.
  • a timestamp 163 that records the length of time of the DCIs is generated by timestamp generator 170 and also written in the capture memory.
  • Trace formatting/compression engine 150 takes the first Burst Dword and writes it into capture memory 160 as represented by 164. Since there are five Burst Dwords that follow, trace formatting/compression engine 150 records 5 repeat counts in the capture memory as represented by 165. A time stamp 166 is also generated by timestamp generator 170. Note that the capture memory 160 also includes ellipses 167 that illustrates that any number of additional OOB records may be recorded as necessary depending on the number of DC-Idles and Data burst Dwords in Dword aligned data 145.
  • the Data Burst Dword and or DC Idle data stored in the capture memory 160 by the method described above may then be displayed using an attached display device (not illustrated) or otherwise accessed by a user of network diagnostic component 130. This allows the user to verify that the timing of an OOB signal is as expected. If the timing of the signal is not as expected, then corrective action may be taken.
  • Speed negotiation data stored in the capture memory 160 may similarly be displayed and analyzed by a user. For example, during SAS speed negotiation, a SAS host/target has to transmit DC-Idles for approximately 500 ⁇ s. Then, if a first SAS device supports a particular speed, it has to transmit ALIGNO data to a second SAS device and wait for ALIGNl data in reply from the second SAS device. When the ALIGNl data is received from the second SAS device, the first SAS device has to transmit ALIGNl data back to the second SAS device. This process is indicated in table 3 below. The SAS device in the example supports 1.5 Gbps SAS speed (which is indicated has Successful Gl speed detected). The count numbers are based on the 13.3 ns per Dword granularity discussed above.
  • Method 300 for an in-line diagnostic component to compress an initialization signal to preserve available memory space is illustrated.
  • Method 300 will be described in relation to the network system of Figures 1 and 2, although this is not required, it will be appreciated that method 300 may be practiced in numerous diagnostic network systems.
  • Method 300 includes an act of receiving a low speed signal pattern including at least a first signal component from a first node for communication with a second node (act 302).
  • network diagnostic component 130 specifically OOB/speed negotiation state machine 140, may receive OOB data sequence 180 from either node 110 or node 120, which may be SAS/SATA devices.
  • OOB signal data sequence 180 is one example of a low speed signal pattern, although other low speed signal patterns as described herein may also be received.
  • OOB data sequence 180 may include both DC-Idles and Data burst Dwords.
  • the first signal component may be either a DC-Idle or a Data burst Dword.
  • Method 300 also includes an act of recording a first signal component in a memory (act 304).
  • trace formatting/compression engine 150 may read the first DC Idle or Data burst Dword in Dword aligned data 145 and record the value in capture memory 160 as record 161.
  • record 161 includes a DC-Idle, although a Data burst Dword or other signal component may also be recorded as record 161.
  • Method 300 further includes an act of recording a representation of at least one subsequent signal component that is the same as the first signal component in the memory (act 306).
  • network diagnostic component 130 which may be a SAS/SATA network component, may record a representation of the subsequent signal components that are the same as the first signal component is capture memory 160 as record 162.
  • this process is performed by a compression counter 151 in trace formatting/compression engine 150 that counts all Data burst Dwords or DC Idles that are the same as the first Data burst Dword or DC Idle recorded in act 304. The count record may then be recorded as record 162.
  • recording a representation of the subsequent signal components that are the same as first signal component saves valuable capture memory space for other diagnostic component use, thus potentially decreasing costs and increasing efficiency.
  • Method 300 additionally includes an act of recording the length of time of the first signal component and the subsequent signal component in the memory (act 308).
  • network diagnostic component 130 may record the length of time of the signal components in record 163.
  • time stamp generator 170 generates a timestamp that is added by trace formatting/compression engine 150 to record memory 160 as record 163.
  • the records of capture memory 160 may be displayed by a display device to inform a user of the comparison. The user may then take corrective action if necessary.
  • diagnostic component 130 may first measure and record the first signal components as described. The diagnostic component may then measure record a second signal component and subsequent signal components that are the same as the second signal component as was described previously.
  • network diagnostic component 130 includes a frame comparator module 54O 5 which may be implemented as hardware, software, or any combination of the two.
  • frame comparator module 540 is implemented as a state machine.
  • frame comparator 540 allows a user to define a mask template 570 and a match template 580 for network diagnostic component 130 to use in looking for a particular frame type for various purposes such as triggering.
  • These templates are generally constructed on a dword basis. Typically, a dword consists of 32 bits, while a data frame consists of a whole number of dwords.
  • a user may choose how many dwords deep into a network data frame 115 (hereinafter also simply referred to as frame 115) comparator module 540 should look for a match.
  • the depth of the search determines the End Address for comparator module 140. For example, if the user desires to compare as deep as the 50 th dword into a frame 115, the End Address is set to the 50 th dword.
  • the user then provides mask template 570 and match template 580 with a mask and a match value for each dword from 1 to 50, respectively. Each mask value and each match value are made up of 32 bits to allow each individual bit of the corresponding dword to be compared.
  • the mask value in mask template 570 is ANDed by frame comparator module 540 with the incoming dword corresponding to the mask value.
  • the mask value for dword 1 is ANDed with the actual dword 1 received by frame compare module 540.
  • the results of the AND operation for all the specified dwords are then compared to the corresponding match values in match template 580. If at any time before the comparator 540 reaches the designated End Address (e.g., 50 dwords in the current example) a mismatch is found, then the comparison is aborted and entire frame 115 is considered not a match.
  • the designated End Address e.g., 50 dwords in the current example
  • frame comparator module 540 While use of frame comparator module 540 is sufficient in many applications, it is often desirable to do a more refined search. For example, there may be a specific data value that a user wishes to search for inside the data payload of incoming frames. Due to variations of how data is packaged inside frame data payloads, the user often cannot be sure that a specific value will be aligned on an even dword boundary within the payload, or where in the payload it may be.
  • the frame comparator 540 only allows match and mask values to be defined for each specific dword location in the frame, but does not allow searching for a specific value that may be found at any position in the frame.
  • the embodiments disclosed herein allow for a sliding comparator to be implemented that allows for a more refined search.
  • network diagnostic component 130 may also include a sliding comparator module 550 and a match comparator module 560.
  • Each of these modules may be implemented as hardware, software, or any combination of hardware and software.
  • these comparator modules are implemented as state machines.
  • Sliding comparator module 550 allows a user to define where to start a search, where to end the search, and a specific dword to match with regardless of its location in the data frame 115. This allows a user to bypass header or other data in the data frame 115 when conducting a search for desired dwords.
  • a user defines a Start Address 556 and an End Address 557. These values are expressed as a number of dwords deep into a frame 115. Accordingly, the Start Address 556 can be set to any desirable dword value. For example, if a header portion of a frame 115 were 20 dwords deep and a data portion of the frame 115 were 100 dwords deep, the user could specify a Start Address 556 of 21 dwords to ensure that the header portion was skipped. Likewise, the user could specify a Start Address 556 of 100 dwords deep to begin searching 80 dwords deep into the data payload portion of the frame 115.
  • the End Address 557 tells the sliding comparator how deep into the frame 115 to go before ending a comparison operation.
  • the Start Address 556 may simply be specified to be the start of the frame 115.
  • the Start Address 556 and the End Address 557 may be specified at a time prior to the operation of diagnostic component 130.
  • Sliding comparator module 550 allows a user to define a mask template 590 and a match template 595 for use in the comparison.
  • the user provides a mask value for the desired dword(s) and a corresponding match template that specifies a comparison condition or operation.
  • sliding comparator module 550 allows the user to define the mask and match templates 590 and 595 to any desired dword or portions of a dword in the portion of the data frame 115 between the defined Start Address 556 and End Address 557.
  • Each mask value and each match template comparison condition may be made up of 32 bits to allow each individual bit of the corresponding dword to be compared.
  • the comparison condition or operation need not simply be a single value, although in some embodiments the match template 595 may specify a single value as the comparison condition. In other embodiments, the match template 595 may specify that the comparison condition is an operation or the like. For example, the comparison condition may specify that the sliding comparator module 550 subtract five from the present Dword being read, the result being the desired comparison condition. Accordingly, the match template 595 is configured to specify any reasonable comparison condition.
  • the sliding comparator searches through the data frame 115 until it reaches the End Address 557 or the data frame ends because the frame 115 is shorter than the End Address 557. Any time the comparison condition of the match template and the incoming dword (or portion thereof) ANDed with the mask value are equal, a match is found. This result may then be reported to other components of network diagnostic component 130 as needed.
  • sliding comparator module 550 is configured to compare at or work on byte boundaries. As mentioned previously, data frames are typically aligned to dword, or 4 byte, boundaries. Accordingly, there may be four four-byte wide sections that the sliding comparator may compare at or work on. For example, the sliding comparator 550 may compare at or work on a first section consisting of the four bytes of one dword. The sliding comparator 550 may also compare at or work on a second section consisting of the last three bytes of one dword combined with the first byte of the next dword in the frame 115.
  • the sliding comparator 550 may further work on or compare at a third section consisting of the last two bytes of one dword and the first two bytes of the next dword in the frame 115. Finally, the sliding comparator 550 may compare at or work on a fourth section consisting of the last byte of one dword and the first three bytes of the next dword in the frame 115. In such embodiments, if the End Address has not been reached when all four sections have been compared, the process begins again. Accordingly, configuring the sliding comparator to work on byte boundaries allows a user to specify a comparison of portions of two or more dwords, thus providing more flexible searching.
  • the sliding comparator module 550 may be configured to operate according to any variation of the previously mentioned frame data boundary alignments and comparison section widths.
  • the sliding comparator module 550 may be configured to operate on frames that are not aligned to dword, or 4 byte, boundaries, but are aligned to more or less than 4 byte boundaries.
  • the sliding comparator module 550 may be configured to compare at or work on data sections more or less than the four bytes wide in size previously described.
  • the sliding frame comparator module 550 could be configured to compare at or work on a data section that is 2 dwords, or 8 bytes, wide that would span 2 or 3 frame data dwords at a time.
  • the sliding comparator 550 may also compare at or work on a data section consisting of a first number of bytes of one dword combined with a second number of bytes of the next dword in the frame 115.
  • the sliding comparator may be configured to read primitive dwords in a data frame 115 without affecting a comparison operation.
  • data frames often consist of Data dwords interspersed with primitive dwords such as ALIGN/NOTIFY and HOLD/HOLDA. In such cases, the sliding comparator typically ignores the primitives and compares the Data dwords only.
  • a data frame 115 included Data dword 1, Data dword 2, primitive dword, primitive dword, and Data dword 3 in that order.
  • the sliding comparator module 550 gets to Data dword 2, it is configured to slide directly to Data dword 3 and ignore the intervening primitive dwords. This is typically done by keeping the value of Data dword 2 latched to a register 565 that may be included in sliding comparator module 550 or contained in another portion of network diagnostic component 130. Using the register allows the value of Data dword 2 to be available to sliding comparator module 550 as long as it is needed.
  • match comparator module 560 which is implemented in some embodiments, is shown.
  • the results of both frame comparator module 540 and sliding comparator module 550 may be provided to match comparator module 560.
  • the match comparator module 560 waits to see if the frame comparator module 540 matches on every dword up to its End Address and if sliding comparator module 550 finds a match somewhere between its Start Address 556 and End Address 557. If both matches are found, then match comparator module 560 determines that the data frame 115 is a match. Other operations may then be performed on the data frame 115 by various components of network diagnostic component 130.
  • Method 600 for an in-line diagnostic component to perform a comparison operation on any specified portion of a data frame is illustrated.
  • Method 600 will be described in relation to the network system of Figures 1 and 5, although this is not required. It will be appreciated that method 600 may be practiced in numerous diagnostic network systems. In some embodiments, method 600 may be performed on the fly in real time by the hardware components and modules of the network diagnostic component.
  • Method 600 includes an act of receiving a network data frame from the first node for communication with the second node, the network data frame comprising one or more data units (act 602).
  • network diagnostic component 130 specifically sliding comparator module 550, may receive network data stream 115 from either node 110 or node 120, which may be SAS/SATA devices.
  • Network data stream 115 may include one or more data units such as Data dwords and may include one or more non- data units such as primitive dwords.
  • Method 600 also includes an act of using a starting address that specifies where in the data frame to begin a comparison operation (act 604) and an act of using an ending address that specifies where in the data frame to end the comparison operation (act 606).
  • sliding comparator module 550 may use a start address 556 that indicates where in network data stream 115 to begin the comparison operation.
  • the sliding comparator module 550 may use an ending address 557 that indicates where in network data stream 115 to end the comparison operation.
  • the ability to define a start address and an end address allows for the comparison of Data dwords (or portions thereof) located at any portion of the data frame between the start and end addresses without having to compare data dwords that are not in the specified portion.
  • Method 600 further includes an act of using a match template that specifies a particular condition for comparison (act 608).
  • sliding comparator 550 may use match template 595.
  • the match template 595 allows a user to define a specific comparison condition for comparison.
  • Method 600 additionally includes an act of performing a comparison operation by searching for a data unit in the portion of the data frame specified by the starting and ending addresses that at least partially matches the comparison condition of the match template, wherein the data component may occur in any location within the specified portion of the data frame (act 610).
  • sliding comparator module 550 may perform the comparison operation by searching for a data dword (or portion thereof) contained in the specified portion of the data frame that matches the comparison condition of the match template.
  • the dword being compared may be located anywhere within the specified portion of the data frame.
  • network diagnostic component 130 may include a frame comparator module or other module that may be used to interpret a received network message or data frame.
  • a frame comparator module or other module that may be used to interpret a received network message or data frame.
  • One example of interpretation is detecting whether or not a data frame includes one or more predetermined Data dwords.
  • frame comparators are often designed to allow detection of up to the first 32 Data dwords in a frame.
  • the frame comparator may detect if a frame contains up to 32 predetermined Data dwords.
  • the frame comparator may be configured by a user to detect any number less or more than 32 Data dwords if circumstances warrant.
  • the frame comparator scans an incoming frame (i.e., it interprets the data frame) to determine if the data frame contains the predetermined Data dwords. If a comparison is found, then network diagnostic component 130 may perform other operations on the data frame.
  • network diagnostic component 130 interprets the first five Data dwords of a particular data frame.
  • the frame comparator of network diagnostic component 130 would typically expect that the first five dwords of the data frame would be Data dwords.
  • the frame comparator would lock onto the first five dwords to perform its interpretation operation. In protocols that ensured that the first five dwords were always Data dwords, the interpretation operation would typically succeed as planned.
  • the network data frame transmitted between nodes 110,120 may be comprised at least partially of Data dwords and protocol specific primitive dwords (also referred to simply as "primitives") that are often interspersed between the Data dwords in a manner that interrupts the proximity and flow of the Data dwords in the data frame.
  • protocol specific primitive dwords also referred to simply as "primitives”
  • large numbers of primitive dwords may be included in the data frame.
  • other primitive dwords may be included in the data frame due to rate matching. With such protocols, it is not guaranteed that a Data dword will be in a given position in the data frame.
  • a data frame may have three Data dwords followed by 20 primitive dwords before the fourth Data dword.
  • a frame comparator that was trying to interpret the first five Data dwords would find a primitive dword in the fourth and fifth dword locations instead of an expected Data dword. Accordingly, the interpretation operation would typically fail.
  • Such a limit of 70 dwords is just an example, and may be imposed, for instance, if the network diagnostic component 130 needed to perform some operation on the start of the frame after the result of the frame comparison was known.
  • the network diagnostic component 130 needed to perform some operation on the start of the frame after the result of the frame comparison was known.
  • this number of dwords would affect the latency of the traffic through network diagnostic component 130, and it is often desirable for this latency to be kept to a minimum for performance reasons.
  • embodiments described herein relate to systems and methods for the compacting of data frames.
  • the compaction process allows network diagnostic component 130 to reorder a data frame to move or remove any primitive dwords that interrupt the proximity of at least some of the Data dwords in the data frame. This ensures that the Data dwords in the data frame are in locations that may be interpretable by components of network diagnostic component 130.
  • Figure 7 illustrates a specific embodiment of network 100. Note that the embodiment of Figure 7 is only one of numerous examples of a network diagnostic component 130 that can be used to implement the embodiments disclosed herein and should not be used to limit the scope of the appended claims. As shown, network diagnostic component 130 includes a frame compaction module 740 and a comparison module 750.
  • Frame compaction module 740 may be implemented in software, hardware, or any combination of the two.
  • Frame compaction module 740 is configured to receive a data stream or frame including Data dwords interspersed with primitive dwords that act to interrupt the proximity and flow of at least some of the Data dwords.
  • Frame compaction module 740 then performs operations on the data frame to reorder the data frame. The reordering places at least a portion of the Data dwords next to each other by moving or removing any interspersed primitive dwords.
  • Comparison module 750 may also be implemented in software, hardware, or any combination of the two, the exact implementation being unimportant to the embodiments described herein. Comparison module 750 is configured to interpret the data frame received from frame compaction module 740 and perform comparison operations on the data frame if circumstances warrant.
  • comparison module 750 may be designed to compare a predetermined number of Data dwords within a total number of dwords of the start of a data frame. For example, in one embodiment, comparison module 750 is configured to compare up to the 32nd Data dword within 70 dwords of the start of a data frame.
  • the predetermined number of Data dwords and total dwords may be any reasonable value determined by a user of network diagnostic component 130. Accordingly, any reference to a specific number of Data dwords and total dwords for comparison and compaction purposes is for illustration only.
  • Frame compaction module 800 includes a detect module 801.
  • Detect module 801 which may be implemented as software, hardware, or any combination of the two, is configured to receive a data frame 805 from a node, such as nodes 110, 120, and to reorder data frame 805 by placing portions of the data frame 805 in one or more FIFOs as will be explained in more detail to follow.
  • Detect module 801 may also be configured to control the flow of dwords from the FIFOs.
  • detect module 801 is a state machine.
  • Frame compaction module 800 also includes a frame FIFO buffer 810 and a pass- through FIFO buffer 820.
  • frame FIFO 810 is configured to have a depth or size of 32 dwords and pass-through FIFO 820 is configured to have a depth or size of 70 dwords. Note that these FIFO depths are specific to embodiments where comparison module 750 is designed to interpret the 32 nd Data dword within 70 dwords of the start of the SAS or SATA data frame. The FIFO depths were chosen to ensure that comparison module 750 is able to interpret the frame once it has passed through frame compaction module 800.
  • 70 dwords was chosen to allow for ALIGN and NOTIFY primitives that may be interspersed among the first 32 data dwords of the frame, running in the SAS or SATA protocol at 3 gigabits per second, as these primitives may not be removed from the data frame in order to compress it further.
  • frame FIFO 810 and pass-through FIFO 820 may have other depths. Accordingly, the embodiments disclosed herein contemplate FIFOs of various depths as operational and design parameters warrant. Note that in embodiments that do not implement the SAS or SATA protocol, there may or may not be dwords that act like ALIGN/NOTIFY dwords in the network traffic.
  • frame compaction module 800 may include a primitive FIFO buffer 830.
  • Primitive FIFO 830 may be any required depth.
  • primitive FIFO 830 is configured to have a depth of 70 dwords as will be explained in more detail to follow. In other embodiments, primitive FIFO 830 may have other depths as necessary.
  • Frame compactor 800 further includes a counter 840 and a counter 850.
  • Counters 840 and 850 are configured to count dwords that are placed in frame FIFO 810 and pass- through FIFO 820 respectively.
  • the counters may be implemented as any reasonable counter.
  • a data frame 805 including Data dwords interspersed with primitive dwords that interrupt the proximity and flow of the Data dwords is received by detect module 801.
  • Detect module 801 first looks for an SOF (Start of Frame) primitive dword, and then determines if each following dword is a Data dword or a primitive dword.
  • SOF Start of Frame
  • SOF Start of Frame
  • detect module 801 When an SOF (Start of Frame) primitive dword is detected by detect module 801, it is placed into frame FIFO 810 and counter 840 is started. Simultaneously, the SOF primitive dword is placed in pass-through FIFO 820 and counter 850 is started.
  • the SOF is a primitive dword, but it is considered a Data dword for purposes of the embodiments disclosed herein, as it is needed along with another 31 Data dwords for comparison at comparison module 750.
  • comparison module 750 compares up to 32 Data dwords within the first 70 dwords of data frame 805.
  • Each Data dword that is detected by detection module 801 after the SOF dword is also simultaneously placed in frame FIFO 810 and pass-through FIFO 820. As the Data dword is placed in each of these FIFOs, the counters 840 and 850 are incremented by one.
  • each primitive dword that is detected by detection module 801 is placed only in the pass-through FIFO 820. Some of these primitive dwords cause counter 850 to be incremented by one. Counter 850 keeps track of the total number of non- ALIGN/NOTIFY dwords in the FIFO 820 at any given time. However, any ALIGN/NOTIFY primitive dwords, which have special rate matching and clock retiming functions in the SAS and SATA protocols, are not counted. The ALIGN/NOTIFY primitive dwords are not altered by frame compaction module 140 in some embodiments to preserve the rate matching and clock retiming functions.
  • detect module 801 does not find that counter 840 has incremented to 32, which indicates that there are not 32 Data dwords in the first 70 dwords of the frame, then the data frame is not passed from FIFO 820 unaltered. Instead, any time a non-ALIGN/NOTIFY dword reaches the output of pass-through FIFO 820, including the SOF dword, the dword is replaced by a SATA_X_RDY primitive dword, which is then passed to comparison module 750. The SATA_X_RDY primitive dwords are ignored by comparison module 750, which looks for the SOF dword before beginning its interpretation of the data frame. The ALIGN/NOTIFY primitive dwords that reach the bottom of pass-through FIFO 820 are passed through unchanged to preserve rate matching and clock retiming as mentioned previously.
  • a data frame included an SOF primitive dword followed by a Data dword, an ALIGN/NOTIFY primitive dword, a Data dword, and a non- ALIGN/NOTIFY primitive dword in that order.
  • counter 840 had not incremented to 32 by the time the SOF dword reached the output of FIFO 820. In that case, detect module 801 would cause that a SATA_X_RDY primitive dword replace and be passed instead of the SOF dword.
  • a SATA XJRDY primitive dword would be sent in place of the first Data dword.
  • the ALIGN/NOTIFY primitive would be passed as described above.
  • Two SATA_X_RDY primitive dwords would also be passed instead of the second Data dword and the non-ALIGN/NOTIFY primitive dword.
  • detect module 801 detects the end of the frame or determines that counter 840 has incremented to 32 (which indicates that there are 32 Data dwords in FIFO 810), then SATA_X_RDY primitive dwords are still sent for each non-ALIGN/NOTIFY dword. This occurs until counter 850, which is no longer incremented but begins to decrement every time a SATA_X_RDY is sent after the end of the frame is detected or counter 840 reaches 32, decrements to the current value of counter 840. This value is 32 unless the end of the frame was detected before counter 840 reached 32.
  • the contents of frame FIFO 810 are sent as frame 815 to comparison module 750. This is performed by sending one Data dword out of frame FIFO 810 each time a non-ALIGN/NOTIFY dword is detected at the output of pass-through FIFO 820. All ALIGN/NOTIFY primitives detected at the bottom of pass-through FIFO 820 are still passed as explained previously. The contents of pass- through FIFO 820 and any new dwords received after this point are also passed through to comparison module 750 as part of data frame 815 after the contents of frame FIFO 810 are passed, and the counters are reset.
  • frame compaction module 800 for the SAS protocol in accordance with one embodiment will now be explained with reference to Figure 8. This operation is similar to the operation discussed above in relation to the embodiment described for the SATA protocol. This embodiment, however, utilizes the primitive FIFO 830 as well as the two FIFOs used in the SATA embodiment.
  • a frame 805 including Data dwords interspersed with primitive dwords that interrupt the proximity and flow of the Data dwords is received by detect module 801.
  • Detect module 801 first looks for an SOF primitive dword (Start of Frame), and then determines if each following dword is a Data dword or a primitive dword.
  • an SOF primitive dword When an SOF primitive dword is detected by detect module 801, it is placed into frame FIFO 810 and counter 840 is started. Simultaneously, the SOF primitive dword is placed in pass-through FIFO 820. Note that in the SAS operation counter 850 is not used as will be described in more detail to follow.
  • Each Data dword that is detected by detection module 801 after the SOF dword is also simultaneously placed in frame FIFO 810 and pass-through FIFO 820. As the Data dword is placed in each of the FIFOs, the counter 840 is incremented by one.
  • each non-ALIGN/NOTIFY primitive dword detected by detection module 801 is simultaneously placed in the pass-through FIFO 820 and the primitive FIFO 830.
  • the non-ALIGN/NOTIFY primitives may include important information that should ultimately be transmitted between nodes 110,120 when operation is in the SAS protocol, thus necessitating their collection in FIFO 830.
  • the ALIGN/NOTIFY primitives are only placed in pass-through FIFO 820. As in the SATA operation, the ALIGN/NOTIFY primitives have rate matching and clock retiming functions and should not be altered by frame compaction module 140 in the example embodiment.
  • comparator module 750 does not begin its operation until seeing an SOF dword.
  • detect module 801 detects the end of the frame or determines that counter 840 has incremented to 32 (which indicates that there are 32 Data dwords in frame FIFO 810)
  • the contents of frame FIFO 810 are sent as data frame 815 to comparison module 750, dwords are no longer placed in frame FIFO 810 or primitive FIFO 830, and counter 840 is cleared. This is performed by sending one word out of frame FIFO 810 each time a non- ALIGN/NOTIFY dword is detected at the output of pass-through FIFO 820.
  • All ALIGN/NOTIFY primitives detected at the bottom of pass-through FIFO 820 are still passed.
  • primitive FIFO 830 is also emptied of any remaining non-ALIGN/NOTIFY primitive dwords to ensure that all non- ALIGN/NOTIFY primitives are also passed as part of or after data frame 815. This is performed by sending one word out of primitive FIFO 830 each time a non- ALIGN/NOTIFY dword is detected at the output of FIFO 820. All ALIGN/NOTIFY primitives detected at the bottom of pass-through FIFO 820 are still passed.
  • AU newer contents of pass-through FIFO 820 and any new dwords received after this point are also passed through to comparison module 750 as part of or after data frame 815, and the counter is reset. This process ensures that the required 32 Data dwords, or less if the frame was shorter than 32 dwords, are received by comparison module 750 within 70 dwords of the start of the frame, thus allowing the comparison module 750 to properly interpret the data frame.
  • the frame compaction operation may then be performed anytime a new SOF is detected by detect module 801.
  • Method 900 will be described in relation to the network system of Figures 1, 7 and 8, although this is not required. It will be appreciated that method 400 may be practiced in numerous diagnostic network systems.
  • Method 900 includes an act of receiving a network data frame from the first node for communication with the second node that includes a plurality of data units interspersed with one or more non-data units that interrupt the proximity and flow of the data units (act 902).
  • network diagnostic component 130 specifically detect module 801 may receive frame 805.
  • frame 805 which may be of the SAS or SATA protocol, may include Data dwords (data units) and one or more primitive dwords (non-data units).
  • the primitive dwords of frame 805 may be interspersed among the Data dwords in a manner that interrupt the proximity and flow of the Data dwords. This interruption of the Data dwords may make it so that comparison module 750 may not properly interpret frame 805.
  • Method 900 also includes an act of reordering the network data frame by removing or moving at least some of the non-data units that that are interspersed with the plurality of data units (act 904).
  • detect module 801 which may be a state machine in some embodiments, may reorder frame 805 into a frame 815 that is interpretable by comparison module 750.
  • the reordering causes a predetermined number of Data dwords to be placed next to each other with few or no primitive dwords between them, except possibly for primitive Dwords such as ALIGN/NOTIFY that may not be moved or removed.
  • the network data frame has been reordered by the removal of at least some of the non- ALIGN/NOTIFY primitive dwords from between the predetermined number of Data dwords and any ALIGN/NOTIFY primitive dwords.
  • the predetermined number of Data dwords is 32, which allows comparison module 750 to compare up to 32 Data dwords deep within the first 70 dwords of frame 815.
  • Method 1000 also includes an act of placing at least the predetermined number of data units and the one or more interspersed non-data units, in a second FIFO buffer (act 1004).
  • detect module 801 may place all traffic, including the predetermined number of Data dwords and the primitive dwords of frame 805 into pass-through FIFO buffer 820, which may be 70 dwords in depth in some embodiments.
  • Detect module 801 then continually removes the bottom dword of the pass-through FIFO 820 and either passes it on or replaces it according to the conditions described below, so that the pass- through FIFO 820 is always full and contains a constant number of dwords at all times, which may be 70 dwords in some embodiments.
  • Method 1000 additionally includes an act of replacing with other non-data units the predetermined data units and at least some of the non-data units as they are read from the second FIFO buffer if the counter has not incremented to the predetermined number and the end of the frame has not been detected (act 1008),.
  • detect module 801 may replace a Data dword and a non- ALIGN/NOTIFY primitive dword any time one of these dwords reaches the bottom of pass-through FIFO 820 before the end of the frame has been detected and before counter 840 has incremented to the predetermined number, which may be 32 in some embodiments.
  • the Data dwords and non-ALIGN/NOTIFY primitive dwords may be replaced by other non-data Dwords such as SATA_X_RDY primitive dwords in some embodiments.
  • the SATA_X_RDY primitive dwords are then passed to comparison module 750 as long as the end of the frame has not been detected and counter 840 has not incremented to 32 by the time that the first frame dword, for example the SOF, reaches the bottom of the second FIFO buffer.
  • ALIGN/NOTIFY primitive dwords are typically passed unaltered or replaced.
  • the traffic is not altered whenever a frame is detected that already has its ending or its first 32 data dwords located within 70 dwords starting with the SOF.
  • Method 1000 further includes an act of passing the data units in the first FIFO buffer when the end of the frame is detected or the counter has incremented to the predetermined value, wherein at least some of the non-data units are no longer interspersed with the predetermined number of data units (act 1010).
  • detect module 801 may pass the Data dwords placed in frame FIFO 810 as frame 815 to comparison module 150 when the end of the frame is detected or counter 840 reaches the predetermined number such as 32.
  • detect module 801 passes a Data dword from frame FIFO 810 every time it detects a non-ALIGN/NOTIFY primitive dword at the bottom of pass-through FIFO 820.
  • ALIGN/NOTIFY primitive dwords are typically passed unaltered. In this manner, at least some of the non- ALIGN/NOTIFY primitive dwords are no longer interspersed with the Data dwords passing from frame FIFO 810. Also, at the point when the end of the frame is detected or the counter 840 reaches the predetermined value, counter 840 is no longer incremented, and no further dwords are placed into frame FIFO 810, but all incoming dwords continue to be placed into pass-through FIFO 820.
  • Method 1000 also includes an act of passing the contents of the second FIFO buffer unaltered after passing the predetermined number of data units from the first FIFO buffer (act 1012). For example, after all data dwords have been sent from frame FIFO 810, dwords are only passed from pass-through FIFO 820 to comparator 750 until detect module 801 detects another SOF and the process starts again. Accordingly, frame 805 has been reordered as frame 815 in such a way that the data frame can be interpreted by comparison module 750. For instance, in the embodiments described above, the reordering of frame 805 ensures that the end of the frame or the first 32 Data dwords are within the first 70 dwords received by comparison module 750.
  • Method 1000 further includes incrementing a second counter, for example counter 850, every time a data dword or a non- ALIGN/NOTIFY dword is placed in pass-through FIFO 320.
  • Counter 350 stops incrementing and begins to decrement any time a Data dword or a non-ALIGN/NOTIFY primitive dword is altered after counter 840 has incremented to the predetermined number or the end of the frame has been detected.
  • detect module 801 continues to replace the Data dwords and the non- ALIGN/NOTIFY primitive dwords coming out of pass-through FIFO 820 and to pass the replaced dwords to comparison module 750 until the counter 850 has decremented to a count that matches the number counted by counter 840. Then all Data dwords are sent from frame FIFO 810, and the counters are reset. In this way, the first dword sent from pass-through FIFO buffer 820 after frame FIFO buffer 810 has been emptied will be whatever dword came directly after the end of the frame or the Data dword 32 in the frame 805.
  • Method 1100 includes an act of placing a predetermined number of the plurality of data units in a first FIFO buffer (act 1102).
  • detect module 801 may place a predetermined number of Data dwords in frame FIFO buffer 810, which may be 32 dwords in depth in some embodiments.
  • the first 32 Data dwords of frame 805 received by detect module 801 may be placed in frame FIFO buffer 810.
  • Method 1100 further includes an act of placing at least some of the non-data units in a third FIFO buffer (act 1106).
  • detect module 801 may place the non- ALIGN/NOTIFY primitive dwords of frame 805 into primitive FIFO buffer 830, which may be 70 dwords in depth in some embodiments.
  • Method 1100 additionally includes an act of incrementing a counter every time one of the predetermined number of data units is placed in the first FIFO buffer (act 1108).
  • counter 840 may begin to count when detect module 801 places an SOF primitive into frame FIFO 810. The counter 840 may then increment any time one of the predetermined number of Data dwords is placed in FIFO 810, which in some embodiments will be the first 32 Data dwords of frame 805.
  • Method 1100 further includes an act of passing a non-data unit placed in the third FIFO and not passing the predetermined number of data units and at least some of the non-data units read from the second FIFO buffer if the end of the frame has not been detected and the counter has not incremented to the predetermined number (act 1110).
  • detect module 801 may pass one of the non- ALIGN/NOTIFY primitive dwords placed in primitive FIFO buffer 830 any time a Data dword or a non- ALIGN/NOTIFY primitive dword reaches the bottom of pass-through FIFO 820 before the end of the frame has been detected and counter 840 has incremented to the predetermined number, which may be 32 in some embodiments.
  • Method 1100 also includes the act of passing the data units in the first FIFO buffer when the end of the frame has been detected or the counter has incremented to the predetermined value, the data units being passed from the first FIFO buffer with fewer or no non-data units interspersed between them (act 1112).
  • detect module 801 may pass the Data dwords placed in frame FIFO 810 as frame 815 to comparison module 750 when the end of the frame is detected or counter 840 reaches the predetermined number such as 32.
  • detect module 801 passes a Data dword from frame FIFO 810 every time it detects a non-ALIGN/NOTIFY primitive dword at the bottom of pass-through FIFO 820.
  • ALIGN/NOTIFY primitive dwords are typically passed unaltered.
  • the data units are passed from frame FIFO 810 with fewer or no primitive dwords interspersed between them as the non- ALIGN/NOTIFY primitive dwords have been moved to other portions of the data frame or after the data frame.
  • the counter 840 reaches the predetermined value, no further dwords are placed into frame FIFO 810, but all incoming dwords continue to be placed into pass-through FIFO 820.
  • Method 1100 further includes the acts of passing any remaining contents of the third FIFO buffer in place of at least some of the data or non-data units read from the second FIFO buffer (act 1114), resetting the counter 840, and passing the contents of the second FIFO buffer after the third FIFO buffer is empty (act 1116). For example, after all data dwords have been sent from frame FIFO 810, the contents of primitive FIFO 830 are then sent in place of each non-ALIGN/NOTIFY dword at the bottom of pass-through FIFO 820, until primitive FIFO 830 is empty. At this point dwords are only passed from pass-through FIFO 820 to comparator 750 until detect module 801 detects another SOF and the process starts again.
  • frame 805 has been reordered as frame 815 in such a way that the data frame can be interpreted by comparison module 750.
  • the reordering of frame 805 ensures that the end of the frame or the first 32 Data dwords are within the first 70 dwords received by comparison module 750 starting with the SOF.
  • frame compaction module 800 or another portion of network diagnostic component 130 may also include an enable module 802.
  • Enable module 802 may be software, hardware, or any combination of the two. Although enable module 802 is illustrated as being a stand alone module, in some embodiments enable module 802 may be part of another module or component of frame compaction module 800 or another portion of network diagnostic component 130.
  • enable module allows for the enablement or non-enablement of frame compaction on the fly.
  • network diagnostic component 130 is configured to operate on both the SAS and SATA protocols.
  • Enable module 802 may enable frame compaction in SAS, SATA, in both SAS and SATA or in neither SAS and SATA. In this way if network diagnostic component 130 is set only to look for and operate on a SAS frame, enable module 802 may have the "SATA enable" turned off, so that if a SATA frame comes along, network diagnostic component 130 ignores it even if the first 32 data words are not proximate.
  • enable module 802 may cause both enables to be turned off if the network diagnostic component 130 is currently looking for a non- data word and not a frame at all. This feature further reduces the number of times that network diagnostic component 130 alters the traffic when it is not absolutely necessary.
  • the network diagnostic component 130 may function as a bit error rate tester.
  • the bit error rate tester may generate and/or transmit an initial version of a bit sequence via a communication path. If desired, the initial version of the bit sequence may be user selected.
  • the bit error rate tester may also receive a received version of the bit sequence via a communication path.
  • the bit error rate tester compares the received version of the bit sequence (or at least a portion of the received version) with the initial version of the bit sequence (or at least a portion of the initial version). In performing this comparison, the bit error rate test may determine whether the received version of the bit sequence (or at least a portion of the received version) matches and/or does not match the initial version of the bit sequence (or at least a portion of the initial version). The bit error tester may thus determine any differences between the compared bit sequences and may generate statistics at least partially derived from those differences. Examples of such statistics may include, but are not limited to, the total number of errors (such as, bits that did not match or lost bits), a bit error rate, and the like.
  • a particular protocol specification may require a bit error rate to be less than a specific value.
  • a manufacturer of physical communication components and connections (such as, optical cables), communication chips, and the like may use the bit error rate tester to determine whether their components comply with a protocol-specified bit error rate.
  • the bit error tester may be used to identify defects in a deployed physical communication path, which then may be physically inspected.
  • the network diagnostic component 130 may function as a protocol analyzer (or network analyzer), which may be used to capture data or a bit sequence for further analysis.
  • the analysis of the captured data may, for example, diagnose data transmission faults, data transmission errors, performance errors (known generally as problem conditions), and/or other conditions.
  • the protocol analyzer may be configured to receive a bit sequence via one or more communication paths or channels.
  • the bit sequence comprises one or more network messages, such as, packets, frames, or other protocol-adapted network messages.
  • the protocol analyzer may passively receive the network messages via passive network connections.
  • the protocol analyzer may be configured to compare the received bit sequence (or at least a portion thereof) with one or more bit sequences or patterns. Before performing this comparison, the protocol analyzer may optionally apply one or more bit masks to the received bit sequence. In performing this comparison, the protocol analyzer may determine whether all or a portion of the received bit sequence (or the bit-masked version of the received bit sequence) matches and/or does not match the one or more bit patterns.
  • the bit patterns and/or the bit masks may be configured such that the bit patterns will (or will not) match with a received bit sequence that comprises a network message having particular characteristics — such as, for example, having an unusual network address, having a code violation or character error, having an unusual timestamp, having an incorrect CRC value, indicating a link re-initialization, and/or having a variety of other characteristics.
  • the protocol analyzer may detect a network message having any specified characteristics, which specified characteristics may be user-selected via user input. It will be appreciated that a specified characteristic could be the presence of an attribute or the lack of an attribute. Also, it will be appreciated that the network analyzer may detect a network message having particular characteristics using any other suitable method.
  • the network analyzer may execute a capture of a bit sequence ⁇ which bit sequence may comprise network messages and/or portions of network messages. For example, in one embodiment, when the network analyzer receives a new network message, the network analyzer may buffer, cache, or otherwise store a series of network messages in a circular buffer. Once the circular buffer is filled, the network analyzer may overwrite (or otherwise replace) the oldest network message in the buffer with the newly received network message or messages. When the network analyzer receives a new network message, the network analyzer may detect whether the network message has a set of one or more specified characteristics.
  • the network analyzer may execute a capture (1) by ceasing to overwrite the buffer (thus capturing one or more network messages prior to detected message), (2) by overwriting at least a portion or percentage of the buffer with one or more newly received messages (thus capturing at least one network message prior to the detected message and at least one network message after the detected message), or (3) by overwriting the entire buffer (thus capturing one or more network messages after the detected message).
  • a user may specify via user input a percentage of the buffer to store messages before the detected message, a percentage of the buffer to store messages after the detected message, or both.
  • a protocol analyzer may convert a captured bit stream into another format.
  • a network analyzer may generate a trigger adapted to initiate a capture of a bit sequence. Also, in response to receiving a trigger adapted to initiate a capture of a bit sequence, a network analyzer may execute a capture of a bit sequence. For example, the network analyzer may be configured to send and/or receive a trigger signal among a plurality of network analyzers. In response to detecting that a received network message has the one or more specified characteristics, a network analyzer may execute a capture and/or send a trigger signal to one or more network analyzers that are configured to execute a capture in response to receiving such a trigger signal.
  • a capture may be triggered in response to detecting any particular circumstance ⁇ whether matching a bit sequence and bit pattern, receiving an external trigger signal, detecting a state (such as, when a protocol analyzer's buffer is filled), detecting an event, detecting a multi-network-message event, detecting the absence of an event, detecting user input, or any other suitable circumstance.
  • the protocol analyzer may optionally be configured to filter network messages (for example, network messages having or lacking particular characteristics), such as, messages from a particular node, messages to a particular node, messages between or among a plurality of particular nodes, network messages of a particular format or type, messages having a particular type of error, and the like. Accordingly, using one or more bit masks, bit patterns, and the like, the protocol analyzer may be used identify network messages having particular characteristics and determine whether to store or to discard those network messages based at least in part upon those particular characteristics.
  • network messages for example, network messages having or lacking particular characteristics
  • the protocol analyzer may be used identify network messages having particular characteristics and determine whether to store or to discard those network messages based at least in part upon those particular characteristics.
  • the protocol analyzer may optionally be configured to capture a portion of a network message.
  • the protocol analyzer may be configured to store at least a portion of a header portion of a network message, but discard at least a portion of a data payload.
  • the protocol analyzer may be configured to capture and to discard any suitable portions of a network message.
  • a manufacturer of network nodes and the like may use the protocol analyzer to determine whether their goods comply with a protocol. Also, when nodes are deployed, the protocol analyzer may be used to identify defects in a deployed node or in other portions of a deployed network. Generator
  • the network diagnostic component 130 may function as a generator.
  • the generator may generate and/or transmit a bit sequence via one or more communication paths or channels.
  • the bit sequence comprises network messages, such as, packets, frames, or other protocol-adapted network messages.
  • the network messages may comprise simulated network traffic between nodes on a network.
  • the bit sequence may be a predefined sequence of messages.
  • a network administrator may evaluate how the nodes (and/or other nodes on the network) respond to the simulated network traffic. Thus, the network administrator may be able to identify performance deviations and take appropriate measures to help avoid future performance deviations.
  • the generator may execute a script to generate the simulated network traffic.
  • the script may allow the generator to dynamically simulate network traffic by functioning as a state machine or in any other suitable manner.
  • a script might include one or more elements like the following: "In state X, if network message A is received, transmit network message B and move to state Y.”
  • the generator may advantageously recognize network messages (and any characteristics thereof) in any other suitable manner, including but not limited to how a protocol analyzer may recognize network messages (and any characteristics thereof).
  • the script may also include a time delay instructing the generator to wait an indicated amount of time after receiving a message before transmitting a message in response.
  • a generator may transmit a response message that is completely predefined.
  • a generator may transmit a response message that is not completely predefined, for example, a response message that includes some data or other portion of the received message.
  • the network diagnostic component 130 may function as a jammer.
  • the jammer may receive, generate, and/or transmit one or more bit sequences via one or more communication paths or channels.
  • the bit sequences comprise network messages (such as, packets, frames, or other protocol-adapted network messages) comprising network traffic between nodes on a network.
  • the jammer may be configured as an inline component of the network such that the jammer may receive and retransmit (or otherwise forward) network messages.
  • the jammer may selectively alter at least a portion of the network traffic, which alterations may introduce protocol errors or other types of errors.
  • the jammer may be configured to compare a received bit sequence ⁇ such as a network message ⁇ (or a portion of the received bit sequence) with one or more bit sequences or patterns. Before performing this comparison, the jammer may optionally apply one or more bit masks to the received bit sequence. In performing this comparison, the jammer may determine whether all or a portion of the received bit sequence (or the bit-masked version of the received bit sequence) matches and/or does not match the one or more bit patterns.
  • the bit patterns and/or the bit masks may be configured such that the bit patterns will (or will not) match with a received bit sequence (or portion thereof) when the received bit sequence comprises a network message from a particular node, a message to a particular node, a network message between or among a plurality of particular nodes, a network message of a particular format or type, and the like.
  • the jammer may be configured to detect a network message having any specified characteristics. Upon detection of the network message having the specified characteristics, the jammer may alter the network message and/or one or more network messages following the network message. Monitor
  • the network diagnostic component 130 may function as a monitor, which may be used to derive statistics from one or more network messages having particular characteristics, one or more conversations having particular characteristics, and the like.
  • the monitor may be configured to receive a bit sequence via one or more communication paths or channels.
  • the monitor passively receives the network messages via one or more passive network connections.
  • the monitor may be configured to compare a received bit sequence ⁇ such as a network message — (or a portion of the received bit sequence) with one or more bit sequences or patterns. Before performing this comparison, the monitor may optionally apply one or more bit masks to the received bit sequence. In performing this comparison, the monitor may determine whether all or a portion of the received bit sequence (or the bit-masked version of the received bit sequence) matches and/or does not match the one or more bit patterns.
  • the bit patterns and/or the bit masks may be configured such that the bit patterns will (or will not) match with a received bit sequence (or portion thereof) when the received bit sequence comprises a network message from a particular node, a network message to a particular node, a network message between or among a plurality of particular nodes, a network message of a particular format or type, a network message having a particular error, and the like.
  • the monitor may be configured to detect a network message having any specified characteristics ⁇ including but not limited to whether the network message is associated with a particular conversation among nodes.
  • the monitor may create and update table entries to maintain statistics for individual network messages and/or for conversations comprising packets between nodes. For example, a monitor may count the number of physical errors (such as, bit transmission errors, CRC errors, and the like), protocol errors (such as, timeouts, missing network messages, retries, out of orders), other error conditions, protocol events (such as, an abort, a buffer-is-full message), and the like. Also, as an example, the monitor may create conversation-specific statistics, such as, the number of packets exchanged in a conversation, the response times associated with the packets exchanged in a conversation, transaction latency, block transfer size, transfer completion status, aggregate throughput, and the like. It will be appreciated that a specified characteristic could be the presence of an attribute or the lack of an attribute.
  • the network diagnostic component 130 may include any features and/or perform any method described in U.S. Patent Application Serial No. 10/769,202, entitled MULTI-PURPOSE NETWORK DIAGNOSTIC MODULES and filed on January 30, 2004, which is hereby incorporated by reference herein in its entirety.
  • network diagnostic component 130 may be used to implement a variety of systems.
  • the network diagnostic component 130 may comprise a printed circuit board.
  • the printed circuit board may include a CPU module.
  • the network diagnostic component 130 may comprise a blade.
  • the blade may include a printed circuit board, an interface, or any combination thereof.
  • the network diagnostic component 130 may comprise a chassis computing system.
  • the chassis computing system may include one or more CPU modules, which may be adapted to interface with one, two, or more blades or other printed circuit boards.
  • a blade may have an interface though which a diagnostic module may send network diagnostic data to a CPU module of the chassis computing system.
  • the chassis computer system may be adapted to receive one or more printed circuit boards or blades.
  • a CPU module may transmit the network diagnostic data it receives to a local storage device, a remote storage device, or any other suitable system for retrieval and/or further analysis of the diagnostic data.
  • a client software program may retrieve, access, and/or manipulate the diagnostic data for any suitable purpose. Examples of systems and methods for storing and retrieving network diagnostic data include, but are not limited to, those described in United States Patent Application Serial Number 10/307,272, entitled A SYSTEM AND METHOD FOR NETWORK TRAFFIC AND I/O TRANSACTION MONITORING OF A HIGH SPEED COMMUNICATIONS NETWORK and filed November 27, 2002, which is hereby incorporated by reference herein in its entirety.
  • the network diagnostic component 130 may comprise an appliance.
  • the appliance may include any suitable combination of one or more CPU modules and one or more diagnostic modules.
  • an appliance may include and/or be in communication with one or more storage devices, which may advantageously be used for storing any suitable diagnostic data, statistics, and the like.
  • an appliance may include and/or be in communication with one or more client interface modules, which may advantageously be used for displaying information to a user, receiving user input from a client software program, or sending information to a client software program.
  • the appliance may also include and/or be in communication with one or more display devices (such as, a monitor) adapted to display information, one or more user input devices (such as, a keyboard, a mouse, a touch screen, and the like) adapted to receive user input, or both.
  • display devices such as, a monitor
  • user input devices such as, a keyboard, a mouse, a touch screen, and the like
  • network diagnostic component 130 may comprise any of a variety of other suitable network diagnostic components.
  • Example Operating and Computing Environments
  • software, hardware, or both may include, by way of example, any suitable module, such as software components, object-oriented software components, class components and task components, processes, functions, attributes, procedures, subroutines, segments of program code, drivers, firmware, microcode, circuitry, data, databases, data structures, tables, arrays, variables, field programmable gate arrays ("FPGA"), a field programmable logic arrays ("FPLAs”), a programmable logic array (“PLAs”), any programmable logic device, application-specific integrated circuits (“ASICs”), controllers, computers, and firmware to implement those methods and systems described above.
  • any suitable module such as software components, object-oriented software components, class components and task components, processes, functions, attributes, procedures, subroutines, segments of program code, drivers, firmware, microcode, circuitry, data, databases, data structures, tables, arrays, variables, field programmable gate arrays ("FPGA”), a field programmable logic arrays ("FPLAs”), a programmable logic array (“PLAs
  • computing device is a broad term and is used in its ordinary meaning and includes, but is not limited to, devices such as, personal computers, desktop computers, laptop computers, palmtop computers, a general purpose computer, a special purpose computer, mobile telephones, personal digital assistants (PDAs), Internet terminals, multi-processor systems, hand-held computing devices, portable computing devices, microprocessor-based consumer electronics, programmable consumer electronics, network PCs, minicomputers, mainframe computers, computing devices that may generate data, computing devices that may have the need for storing data, and the like.
  • PDAs personal digital assistants
  • one or more software modules, one or more hardware modules, or both may comprise a means for performing some or all of any of the methods described herein. Further, one or more software modules, one or more hardware modules, or both may comprise a means for implementing any other functionality or features described herein.
  • Embodiments within the scope of the present invention also include computer- readable media for carrying or having computer-executable instructions or data structures stored thereon.
  • Such computer-readable media can be any available media that can be accessed by a computing device.
  • Such computer- readable media can comprise any storage device or any other medium which can be used to carry or store desired program code means in the form of computer-executable instructions or data structures and which can be accessed by a computing device.
  • Computer-executable instructions comprise, for example, instructions and data which cause a computing device to perform a certain function or group of functions.
  • Data structures include, for example, data frames, data packets, or other defined or formatted sets of data having fields that contain information that facilitates the performance of useful methods and operations.
  • Computer-executable instructions and data structures can be stored or transmitted on computer-readable media, including the examples presented above.

Abstract

A network diagnostic device or component that is placed in-line between two nodes in a network to compress network data traffic to preserve available memory space. The network diagnostic component receives a low speed signal pattern from a first node for communication with a second node. The low speed signal pattern may be received by a receive module. The low speed signal pattern includes one at least a first signal component. The network diagnostic component records the first signal component in a memory. The network diagnostic component also records in the memory a representation of at least one subsequent signal component that is the same as the first signal component. The network diagnostic component may then record the length of time of the first signal component and the subsequent signal component in the memory.

Description

DIAGNOSTIC FUNCTIONS IN AN IN-LINE DEVICE
BACKGROUND
Computer and data communications networks continue to proliferate due to declining costs, increasing performance of computer and networking equipment, and increasing demand for communication bandwidth. Communications networks ~ including wide area networks ("WANs"), local area networks ("LANs"), metropolitan area networks ("MANs"), and storage area networks ("SANS") ~ allow increased productivity and use of distributed computers or stations through the sharing of resources, the transfer of voice and data, and the processing of voice, data and related information at the most efficient locations. Moreover, as organizations have recognized the economic benefits of using communications networks, network applications such as electronic mail, voice and data transfer, host access, and shared and distributed databases are increasingly used as a means to increase user productivity. This increased demand, together with the growing number of distributed computing resources, has resulted in a rapid expansion of the number of installed networks.
As the demand for networks has grown, network technology has developed to the point that many different physical configurations presently exist. Examples include Gigabit Ethernet ("GE"), 10 GE, Fiber Distributed Data Interface ("FDDI"), Fibre Channel ("FC"), Synchronous Optical Network ("SONET"), Serial Attached SCSI ("SAS"), Serial Advanced Technology Attachment ("SATA"), and InfiniBand networks. These networks, and others, typically conform to one of a variety of established standards, or protocols, which set forth rules that govern network access as well as communications between and among the network resources. Typically, such networks utilize different cabling systems, have different characteristic bandwidths and typically transmit data at different speeds. Network bandwidth, in particular, has been the driving consideration behind much of the advancements in the area of high speed communication systems, methods and devices.
For example, the ever-increasing demand for network bandwidth has resulted in the development of technology that increases the amount of data that can be pushed through a single channel on a network. Advancements in modulation techniques, coding algorithms and error correction have vastly increased the rates at which data can be transmitted across networks. For example, a few years ago, the highest rate that data could travel across a network was at about one Gigabit per second. This rate has increased to the point where data can travel across various networks such as Ethernet and SONET at rates as high as 10 gigabits per second, or faster.
As communication networks have increased in size, speed and complexity however, they have become increasingly likely to develop a variety of problems that, in practice, have proven difficult to diagnose and resolve. Such problems are of particular concern in light of the continuing demand for high levels of network operational reliability and for increased network capacity.
The problems generally experienced in network communications can take a variety of forms and may occur as a result of a variety of different circumstances. Examples of circumstances, conditions and events that may give rise to network communication problems include the transmission of unnecessarily small frames of information, inefficient or incorrect routing of information, improper network configuration and superfluous network traffic, to name just a few. Such problems are aggravated by the fact that networks are continually changing and evolving due to growth, reconfiguration and introduction of new network topologies and protocols. Moreover, new network interconnection devices and software applications are constantly being introduced and implemented. Circumstances such as these highlight the need for effective, reliable, and flexible diagnostic mechanisms.
BRIEF SUMMARY
Embodiments disclosed herein relate to a network diagnostic device or component that is placed in-line between two nodes in a network to compress network data traffic to preserve available memory space. For example, the network diagnostic component receives a low speed signal pattern from a first node for communication with a second node. The low speed signal pattern may be received by a receive module. The low speed signal pattern includes at least a first signal component.
The network diagnostic component records the first signal component in a memory. The network diagnostic component also records in the memory a representation of at least one subsequent signal component that is the same as the first signal component. The network diagnostic component may then record the length of time of the first signal component and the subsequent signal component in the memory.
Embodiments further disclosed herein relate to a network diagnostic device or component that is placed in-line between two nodes in a network to perform a comparison operation on any specified portion of a data frame. For example, the network diagnostic component receives a network data stream from a first node for communication with a second node. The network data stream includes one or more data units.
The network diagnostic component uses a starting address and an ending address that specify where in the data frame a comparison operation should begin and end at respectively. The network diagnostic device further uses a match template that specifies a particular condition for comparison.
A comparison operation may then be performed by searching for a data unit in the portion of the data frame specified by the beginning and ending addresses that at least partially matches the comparison condition of the match template. . The data unit may occur in any location within the specified portion.
Embodiments disclosed herein also relate to a network diagnostic device or component that is placed in-line between two nodes in a network to compress a random data signal. For example, in one embodiment the network diagnostic component receives a network data frame from the first node for communication with the second node. The network data frame may include a plurality of data units interspersed with one or more non-data units that interrupt the proximity and flow of the data units.
The network diagnostic unit may then reorder the network data frame by removing or moving at least some of the non-data units that are interspersed with the plurality of data units. The reordered network data frame may then be interpreted by other components of the network diagnostic component.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
Additional features and advantages will be set forth in the description that follows, and in part will be obvious from the description, or may be learned by the practice of the embodiments disclosed herein. The features and advantages of the embodiments disclosed herein may be realized and obtained by means of the instruments and combinations particularly pointed out in the appended claims. These and other features of the embodiments disclosed herein will become more fully apparent from the following description and appended claims, or may be learned by the practice of the embodiments disclosed herein as set forth hereinafter. BRIEF DESCRIPTION OF THE DRAWINGS
To further clarify the above and other advantages and features of the present invention, a more particular description of the invention will be rendered by reference to specific embodiments thereof which are illustrated in the appended drawings. It is appreciated that these drawings depict only typical embodiments of the invention and are therefore not to be considered limiting of its scope. The invention will be described and explained with additional specificity and detail through the use of the accompanying drawings in which:
Figure 1 illustrates a block diagram of a network including a network diagnostic component placed in-line between two nodes;
Figure 2 illustrates a detailed view of a particular embodiment of the network diagnostic component of Figure 1;
Figure 3 illustrates a method for a network diagnostic component placed in-line between two nodes to compress an initialization signal to preserve available memory space; and
Figure 4 illustrates Data burst and DC-Idle portions of various SAS and SATA OOB signals;
Figure 5 illustrates a detailed view of a particular embodiment of the network diagnostic component of Figure 1;
Figure 6 illustrates a method for a network diagnostic component placed in-line between two nodes to perform a comparison operation on any specified portion of a data frame;
Figure 7 illustrates a particular embodiment of the network diagnostic component of Figure 1;
Figure 8 illustrates a frame compaction module in accordance with embodiments discloses herein;
Figure 9 illustrates a method for a network diagnostic component placed in-line between two nodes to reorder or compact network traffic;
Figure 10 illustrates a specific method for reordering network traffic; and
Figure 11 illustrates an additional specific method for reordering network traffic. DETAILED DESCRIPTION
Embodiments disclosed herein relate to a network diagnostic device or component that is placed in-line between two nodes in a network to compress network data traffic to preserve available memory space. For example, the network diagnostic component receives a low speed signal pattern from a first node for communication with a second node. The low speed signal pattern may be received by a receive module. The low speed signal pattern includes at least a first signal component.
The network diagnostic component records the first signal component in a memory. The network diagnostic component also records in the memory a representation of at least one subsequent signal component that is the same as the first signal component. The network diagnostic component may then record the length of time of the first signal component and the subsequent signal component in the memory.
Embodiments further disclosed herein relate to a network diagnostic device or component that is placed in-line between two nodes in a network to perform a comparison operation on any specified portion of a data frame. For example, the network diagnostic component receives a network data stream from a first node for communication with a second node. The network data stream includes one or more data units.
The network diagnostic component uses a starting address and an ending address that specify where in the data frame a comparison operation should begin and end at respectively. The network diagnostic device further uses a match template that specifies a particular condition for comparison.
A comparison operation may then be performed by searching for a data unit in the portion of the data frame specified by the beginning and ending addresses that at least partially matches the comparison condition of the match template. . The data unit may occur in any location within the specified portion.
Embodiments disclosed herein also relate to a network diagnostic device or component that is placed in-line between two nodes in a network to compress a random data signal. For example, in one embodiment the network diagnostic component receives a network data frame from the first node for communication with the second node. The network data frame may include a plurality of data units interspersed with one or more non-data units that interrupt the proximity and flow of the data units.
The network diagnostic unit may then reorder the network data frame by removing or moving at least some of the non-data units that are interspersed with the plurality of data units. The reordered network data frame may then be interpreted by other components of the network diagnostic component.
The embodiments disclosed herein may be practiced in networking systems, including the testing of high speed data transmission systems and components. Embodiments described herein may also be used in other contexts unrelated to testing systems and components and/or unrelated to high speed data transmission. An example networking system will first be described. Then, the operation in accordance with specific embodiments disclosed herein will be described. Note that as used herein the terms "first", "second" and so forth are not intended to imply sequential ordering, but rather are intended to distinguish one element from another.
Example Networking System
Figure 1 is a block diagram of a networking system 100. The networking system 100 may include one or more nodes 110, 120, which communicate with each other via a network. As used herein, a "node" includes, but is not limited to, a server or host; a client or storage device; a switch; a hub; a router; all or a portion of a SAN fabric; a diagnostic device; and any other device or system, or combination thereof, that may be coupled to a network and that may receive and/or monitor a signal or data over at least a portion of a network, that may send and/or generate a signal or data over at least a portion of a network, or both.
In one embodiment, a signal (such as, an electrical signal, an optical signal, and the like) may be used to send and/or receive network messages over at least a portion of a network. As used herein, a "network message" or "network data stream" includes, but is not limited to, a packet; a datagram; a frame; a data frame; a command frame; an ordered set; any unit of data capable of being routed (or otherwise transmitted) through a computer network; and the like. In one embodiment, a network message or data stream may comprise transmission characters used for data purposes, protocol management purposes, code violation errors, and the like.
Also, an ordered set may include, a Start of Frame ("SOF"), an End of Frame ("EOF"), an Idle, a Receiver_Ready ("R_RDY"), a Loop Initialization Primitive ("LIP"), an Arbitrate ("ARB"), an Open ("OPN"), and Close ("CLS") ~ such as, those used in certain embodiments of Fibre Channel. Of course, any ordered sets and/or any network messages of any other size, type, and/or configuration may be used, including, but not limited to, those from any other suitable protocols.
Nodes may communicate using suitable network protocols, including, but not limited to, serial protocols, physical layer protocols, channel protocols, packet-switching protocols, circuit-switching protocols, Ethernet, Fast Ethernet, Gigabit Ethernet, 10 Gigabit Ethernet, Fibre Channel, Fibre Channel Arbitrated Loop ("FC-AL"), Small Computer System Interface ("SCSI"), High Performance Parallel Interface ("HIPPI"), Serial Attached SCSI ("SAS"), Serial ATA ("SATA"), Serial SCSI Architecture ("SSA"), and the like. In this description and in the claims, protocol is defined to mean at least the speed at which the nodes communicate and the communication rules that are used by the nodes when communicating.
As shown in Figure 1, the nodes 110,120 are preferably SAS/SATA nodes. As used herein, "SAS/SATA nodes" includes nodes that are SAS compatible, nodes that are SATA compatible, and nodes that are both SAS compatible and SATA compatible. It will be appreciated, however, that the nodes 110,120 need not be SATA/SATA nodes and that the nodes 110,120 may be other types of nodes that are compatible with other types of network protocols. In addition, any reference to a node as being a host or initiator node and another node as being a target node is for illustration only. It is contemplated that nodes 110, 120 can be both host and target nodes as circumstances warrant.
The networking system 100 may comprise a network, network diagnostic system, a network testing system, or the like including network diagnostic components (such as network diagnostic component 130), which may be configured to communicate network messages among nodes. For example, the network diagnostic component 130 may be inserted between the nodes 110,120 such that network messages sent between the nodes 110,120 are available to network diagnostic component 130 and/or are routed through the network diagnostic component 130.
In further detail, the network diagnostic component 130 may send and receive signals or data. Accordingly, using a signal, the network diagnostic component 130 may receive one or more network messages from a node, send one or more network messages to a node, or both. For example, the network diagnostic component 130 may receive one or more network messages sent between the nodes 110,120. The network diagnostic component 130 may also retransmit those network messages. In particular, the network diagnostic component 130 may receive network messages sent from the node 110 and then retransmit them to the node 120. Also, the network diagnostic component 130 may receive network messages sent from the node 120 and then retransmit them to the node 110. As used herein, "in-line" denotes that a network diagnostic component is configured to have the network messages sent between two nodes routed to it so that the network messages are available to the network diagnostic component. In some embodiments the network diagnostic component may be directly in-line or it may be indirectly in-line through the use of a tap or like device. In still other embodiments, the network diagnostic component may have the network messages routed to it in any reasonable way. Prior to retransmitting these network messages, the network diagnostic component 130 can modify the signal used to transmit the network messages. For example, the network diagnostic component 130 may digitally retime the signal, may modify the content of the messages themselves, or both. It will be appreciated that the network diagnostic component 130 may modify the signal in other desired ways. Because it is not always desirable to have the network diagnostic component 130 modify the signal, the network diagnostic component 130 may be selectively configured to modify (or not to modify) the signal used to transmit the network messages.
The network diagnostic component 130 may also perform a variety of network diagnostic functions using network messages sent between the nodes 110,120. In performing some of these diagnostic functions, the network diagnostic component 130 may be configured to be passive to the network messages. If desired, the network diagnostic component 130 may receive at least some of the network messages, and may transmit some or all of the received traffic. In performing other diagnostic functions, the network diagnostic component 130 may be configured to modify some or all of the network traffic.
As shown in Figure 1, the network diagnostic component 130 is preferably a SAS/SATA network diagnostic component. As used herein, "SAS/SATA network diagnostic components" includes network diagnostic components that are SAS compatible, network diagnostic components that are SATA compatible, and network diagnostic components that are both SAS compatible and SATA compatible. It will be appreciated, however, that the network diagnostic component 130 need not be a SAS/SATA network diagnostic component and that the network diagnostic component 130 may be another type of network diagnostic component that is compatible with other types of network protocols. In fact, the network diagnostic component 130 may be configured to perform its functions on any type of network and/or network topology using any number of network protocols.
Out-Of-Band Sequence and Speed Negotiation
In many applications, nodes 110 and node 120 may have periods of time when they communicate using a low speed signal pattern. Typically, the low speed signal patterns include full-amplitude data burst periods and zero amplitude common mode voltage periods where no data is transmitted. Such data patterns are "low speed" in the sense that they as generally slower than regular data transmission. A typical example of such a low speed signal pattern is the Out-of-Band signals common in such protocols as SAS and SATA. Of course, one skilled in the art will recognize that there are numerous other protocols with low speed signal patterns as described above.
Often, nodes 110 and 120 undergo an initialization process prior to communicating with each other. This initialization process allows the two nodes to agree upon the protocol (e.g., speed and/or communication rules) that the nodes will utilize while communicating with each other. As mentioned above, many nodes are configured to use both the SAS protocol and the SATA protocol. In such cases, it is often necessary during the initialization process for the nodes to specify whether they will be communicating using the SAS protocol or the SATA protocol.
The communication rules are specified as part of the initialization process by low speed Out-Of-Band (OOB) signals that are defined by the SAS and SATA protocols. OOB signals constitute defined periods of DC-Idle (common mode voltage) followed by defined periods of Data bursts. The defined periods are specified by the SAS and SATA protocols. The Data burst period is the same for all the OOB signals. The DC-Idle period, however, varies and is used to differentiate between the different kinds of OOB signals. For example, the Data bursts and DC-Idles are defined in terms of an OOB Interval (OOBI), which at 1.5 Gigabits per second (Gbps) is nominally 666.666 picoseconds. The time periods for the Data bursts and DC-Idles of various SAS and SATA OOB signals are summarized in Table 1. A graphical representation of the Data burst and DC-Idle portions of the various SAS and SATA OOB signals is illustrated in Figure 4.
Figure imgf000011_0001
Table 1
Node 110, when desiring to utilize the SAS protocol, may send OOB signals designated as COMINIT/COMRESET (COMINIT/COMRESET are electrically identical signals) and COMSAS to node 120. As shown in Table 1 and Figure 4, these OOB signals have defined Data burst periods and defined DC-idle periods that indicate the signal type. Upon receipt of these OOB signals, node 120 will be informed that node 110 desires to communicate using the SAS protocol. The node 120 may then respond appropriately. In similar manner, if node 110 wishes to utilize the SATA protocol, it may send the COMINIT/COMRESET OOB signal and a COMWAKE OOB signal to node 120. As with the other OOB signals previously discussed, the COMWAKE signal also has defined Data burst periods and defined DC-idle periods as also shown in Table 1 and Figure 4. Upon receipt of these OOB signals, node 120 will be informed that node 110 desires to communicate using the SATA protocol. The node 120 may then respond appropriately.
In some cases, node 110 may not know ahead of time which protocol node 120 may support. In those instances, node 110 may send all of the OOB signals to node 120. Node 120 will then recognize the OOB signals for the protocol that it is configured at that particular time to support and will respond to node 110 appropriately.
The speed of communication, on the other hand, is determined during a speed negotiation sequence that typically follows the OOB sequence. This consists of different speed negotiation windows that often begin at the lowest possible speed and then continue to higher speeds. For example, SAS/SATA nodes typically communicate at 1.5 Gbps, 3 Gbps, 6 Gbps, etc.
For example, in the SAS protocol, node 110 would first send a speed negotiation signal at 1.5 Gbps to node 120. If node 120 recognized the 1.5 Gbps speed negotiation signal, then node 110 would send a speed negotiation signal at 3 Gbps. If node 120 recognized the 3 Gbps speed negotiation signal, then node 110 would send a speed negotiation signal at 6 Gbps. This process would continue until either node 110 had reached its speed limit or there was a speed that node 120 did not recognize. In either case, the fastest speed supported by both nodes would be used.
In the SATA protocol, on the other hand, node 120, which is the SATA target in the illustrated embodiment, would send speed negotiation data at its highest speed first. If node UO (the SATA host) could synchronize to this speed, then the speed is used. If node 110 could not synchronize, then node 120 would try its next lowest speed until a speed is found that node 110 could synchronize to. For example, node 120 would first send a speed negotiation signal at 6 Gbps. If node 110 could not synchronize to this speed, node 120 would send a speed negotiation signal at 3 Gbps. Note that although the above example was described in relation to using OOB signals in an initialization process, it understood that OOB signals may be sent by nodes UO and 120 for other purposes as well. In addition, as previously mentioned, nodes 110 and 120 may also communicate using other types of low speed signal patterns as described above. Capture Timing and Negotiation Data with Repeat Counts
It is often the case, however, that a user of network 100 desires to analyze the timing of the Data burst and DC-Idle periods of a signal. This is done to ascertain that a proper signal is being received. In some network systems, every individual Dword that comprises a Data burst or DC-Idle is stored in a memory and then used to ascertain the timing of the signal. This approach can be costly in terms of available memory space as a large number of Dwords may require a large percentage of memory resources. Embodiments described herein allow for network diagnostic component 130 to ascertain the timing of the Data bursts and DC-Idles without having to store every individual Dword in memory. Such embodiments will be described with reference to Figure 1, which was previously described, and Figure 2, which shows a detailed view of one particular embodiment of network diagnostic component 130. Note that the embodiment of Figure 2 is only one of numerous examples of a network diagnostic component 130 that can be used to implement the embodiments disclosed herein. Although the following embodiments will be described using the SAS and SATA protocols, this is by way of example only and should not be used to limit the scope of the appended claims. Other suitable protocols may also be utilized by the embodiments disclosed herein.
Figure 2 shows that the embodiment of network diagnostic component 130 includes an Out-of-Band (OOB)/speed negotiation state machine 140, a trace formatting/compression engine 150, a capture memory 160, and a timestamp generator 170. Capture memory 160 may be a buffer in some embodiments and may also be any other type of suitable non-persistent and persistent memory source in other embodiments.
The OOB/speed negotiation state machine 140 may be implemented as any reasonable state machine. The OOB/Speed Negotiation State Machine 140 samples an incoming OOB sequence 180 from the wire using an internal Dword clock 141. The data sequence 180 is made up of Data bursts 185 and DC Idles 186 which may correspond to the Data bursts and DC-idles discussed previously in relation to Figure 4 and Table 1. Of course, data sequence 180 may also correspond to other low speed signal patterns as described herein.
The OOB/Speed Negotiation State Machine 140 then generates Dword aligned data 145 that represents the DC-idles and Data burst Dwords that are detected from OOB sequence 180. As illustrated, Dword aligned data 145 includes an ellipses 146 that represents that any number of DC-idles and Data burst Dwords may be included in OOB sequence 180. The Dword aligned data 145 is then passed to the trace formatting /compression engine 150.
The trace formatting/compression engine 150 may be implemented as software, hardware, or any combination of software and hardware. The trace formatting/compression engine 150 is configured to compress the DC-Idles and Data burst Dwords of Dword aligned data 145 by counting the the DC-Idles and Data burst Dwords and providing a count record to capture memory 160 as will be explained. The trace formatting/compression engine 150 is also configured provide for the insertion of a timestamp into the capture memory.
For example, trace formatting/compression engine 150 reads the first Dword or DC Idle in Dword aligned data 145 and writes the Dword or DC Idle to capture memory 160. Any subsequent Dwords or DC Idles that are the same as the first Dword are counted by a compression counter 151 inside the formatting /compression engine 150. A repeat count record is generated and written into the capture memory 160 when the trace formatting/compression engine 150 reads a Dword that is different from the preceding Dword. The count value of this repeat count record is the value of the compression counter 151. The compression counter 151 is reset to zero after the repeat count is written.
When the trace formatting/compression engine 150 reads the first Dword or DC Idle, it causes timestamp generator 170, which may be a counter in some embodiments, to begin counting. Timestamp generator 170 continues to count until trace formatting/compression engine 150 reads a new Dword or DC Idle. The resulting timestamp identifies the length of time from the first Dword or DC Idle to the new Dword or DC Idle inserted by trace formatting/compression engine 150 in capture memory 160 after the repeat count record gets written. The timestamp allows the accurate recreation of the DC- Idles and Data bursts that happened on the line. Use of the timestamp also allows a user of network diagnostic component 130 to ascertain how long the Data burst and DC-Idle periods lasted.
The new Dword or DC Idle is also written by trace formatting/compression engine 150 into the capture memory. Any subsequent Dwords or DC Idles that are the same will be counted and written into the memory 160 as described. A timestamp of this length of time will also be written as described. This process may continue any time a Dword or DC Idle that is different from a preceding Dword or DC Idle is read by trace formatting/compression engine 150. A specific example will now be described. Note that the numbers of Dwords or DC Idles used in the example is for illustration only and should not be used to limit the scope of the appended claims. Referring to Figure 2, Dword aligned data 145 includes 5 DC-Idles, labeled as DCI, followed by six Data burst Dwords, labeled as Burst. Trace formatting/compression engine 150 reads the first DCI and writes it into capture memory 160 as represented by 161. Since there are four DCIs that follow, trace formatting/compression engine 150 records 4 repeat counts from compression counter 151 in the capture memory as represented by 162. A timestamp 163 that records the length of time of the DCIs is generated by timestamp generator 170 and also written in the capture memory.
Following the DCIs are the six Data burst Dwords. Trace formatting/compression engine 150 takes the first Burst Dword and writes it into capture memory 160 as represented by 164. Since there are five Burst Dwords that follow, trace formatting/compression engine 150 records 5 repeat counts in the capture memory as represented by 165. A time stamp 166 is also generated by timestamp generator 170. Note that the capture memory 160 also includes ellipses 167 that illustrates that any number of additional OOB records may be recorded as necessary depending on the number of DC-Idles and Data burst Dwords in Dword aligned data 145.
The Data Burst Dword and or DC Idle data stored in the capture memory 160 by the method described above may then be displayed using an attached display device (not illustrated) or otherwise accessed by a user of network diagnostic component 130. This allows the user to verify that the timing of an OOB signal is as expected. If the timing of the signal is not as expected, then corrective action may be taken.
For example, the COMSAS OOB signal previously described typically contains DC-Idles followed by Data bursts, which typically are ALIGN primitives. The DC-Idle time for COMSAS is approximately 960 nanoseconds (ns) and the Data burst time is 120 ns. At 3 Gbps speed, the Dword granularity is typically 13.3 ns. Hence, the count for the DC-Idle time will be 72 Dwords. The count for the Align Data bursts will be 9 Dwords. From this, diagnostic component 130 is able to detect that a received signal 180 is a COMSAS signal. This may be displayed as shown in Table 2 below.
Figure imgf000015_0001
Figure imgf000016_0001
Table 2
Speed negotiation data stored in the capture memory 160 may similarly be displayed and analyzed by a user. For example, during SAS speed negotiation, a SAS host/target has to transmit DC-Idles for approximately 500 μs. Then, if a first SAS device supports a particular speed, it has to transmit ALIGNO data to a second SAS device and wait for ALIGNl data in reply from the second SAS device. When the ALIGNl data is received from the second SAS device, the first SAS device has to transmit ALIGNl data back to the second SAS device. This process is indicated in table 3 below. The SAS device in the example supports 1.5 Gbps SAS speed (which is indicated has Successful Gl speed detected). The count numbers are based on the 13.3 ns per Dword granularity discussed above.
Figure imgf000016_0002
Example Methods of Capture Timing and Negotiation Data with Repeat Counts
Referring now to Figure 3, a flowchart of a method 300 for an in-line diagnostic component to compress an initialization signal to preserve available memory space is illustrated. Method 300 will be described in relation to the network system of Figures 1 and 2, although this is not required, it will be appreciated that method 300 may be practiced in numerous diagnostic network systems.
Method 300 includes an act of receiving a low speed signal pattern including at least a first signal component from a first node for communication with a second node (act 302). For example, network diagnostic component 130, specifically OOB/speed negotiation state machine 140, may receive OOB data sequence 180 from either node 110 or node 120, which may be SAS/SATA devices. As mentioned, the OOB signal data sequence 180 is one example of a low speed signal pattern, although other low speed signal patterns as described herein may also be received. OOB data sequence 180 may include both DC-Idles and Data burst Dwords. The first signal component may be either a DC-Idle or a Data burst Dword.
Method 300 also includes an act of recording a first signal component in a memory (act 304). For example, trace formatting/compression engine 150 may read the first DC Idle or Data burst Dword in Dword aligned data 145 and record the value in capture memory 160 as record 161. As illustrated, record 161 includes a DC-Idle, although a Data burst Dword or other signal component may also be recorded as record 161.
Method 300 further includes an act of recording a representation of at least one subsequent signal component that is the same as the first signal component in the memory (act 306). For example, network diagnostic component 130, which may be a SAS/SATA network component, may record a representation of the subsequent signal components that are the same as the first signal component is capture memory 160 as record 162. In some embodiments, this process is performed by a compression counter 151 in trace formatting/compression engine 150 that counts all Data burst Dwords or DC Idles that are the same as the first Data burst Dword or DC Idle recorded in act 304. The count record may then be recorded as record 162. Advantageously, recording a representation of the subsequent signal components that are the same as first signal component saves valuable capture memory space for other diagnostic component use, thus potentially decreasing costs and increasing efficiency.
Method 300 additionally includes an act of recording the length of time of the first signal component and the subsequent signal component in the memory (act 308). For example, network diagnostic component 130 may record the length of time of the signal components in record 163. In some embodiments, time stamp generator 170 generates a timestamp that is added by trace formatting/compression engine 150 to record memory 160 as record 163.
In some embodiments, the records of capture memory 160 may be displayed by a display device to inform a user of the comparison. The user may then take corrective action if necessary. In further embodiments, diagnostic component 130 may first measure and record the first signal components as described. The diagnostic component may then measure record a second signal component and subsequent signal components that are the same as the second signal component as was described previously.
Example Frame Comparator
Referring now to Figure 5, an additional embodiment of network 100 is illustrated. Note that the specific embodiment of Figure 5 is for illustration only, and is not intended to limit the scope of the appended claims. As shown in this embodiment, network diagnostic component 130 includes a frame comparator module 54O5 which may be implemented as hardware, software, or any combination of the two. In some embodiments, frame comparator module 540 is implemented as a state machine.
In operation, frame comparator 540 allows a user to define a mask template 570 and a match template 580 for network diagnostic component 130 to use in looking for a particular frame type for various purposes such as triggering. These templates are generally constructed on a dword basis. Typically, a dword consists of 32 bits, while a data frame consists of a whole number of dwords.
A user may choose how many dwords deep into a network data frame 115 (hereinafter also simply referred to as frame 115) comparator module 540 should look for a match. The depth of the search determines the End Address for comparator module 140. For example, if the user desires to compare as deep as the 50th dword into a frame 115, the End Address is set to the 50th dword. The user then provides mask template 570 and match template 580 with a mask and a match value for each dword from 1 to 50, respectively. Each mask value and each match value are made up of 32 bits to allow each individual bit of the corresponding dword to be compared.
For each dword, the mask value in mask template 570 is ANDed by frame comparator module 540 with the incoming dword corresponding to the mask value. For example, the mask value for dword 1 is ANDed with the actual dword 1 received by frame compare module 540. The results of the AND operation for all the specified dwords are then compared to the corresponding match values in match template 580. If at any time before the comparator 540 reaches the designated End Address (e.g., 50 dwords in the current example) a mismatch is found, then the comparison is aborted and entire frame 115 is considered not a match.
While use of frame comparator module 540 is sufficient in many applications, it is often desirable to do a more refined search. For example, there may be a specific data value that a user wishes to search for inside the data payload of incoming frames. Due to variations of how data is packaged inside frame data payloads, the user often cannot be sure that a specific value will be aligned on an even dword boundary within the payload, or where in the payload it may be. In addition, the frame comparator 540 only allows match and mask values to be defined for each specific dword location in the frame, but does not allow searching for a specific value that may be found at any position in the frame. The embodiments disclosed herein allow for a sliding comparator to be implemented that allows for a more refined search.
Example Sliding Comparator Module
Referring again to Figure 5, it is illustrated that network diagnostic component 130 may also include a sliding comparator module 550 and a match comparator module 560. Each of these modules may be implemented as hardware, software, or any combination of hardware and software. In some embodiments, these comparator modules are implemented as state machines. Sliding comparator module 550 allows a user to define where to start a search, where to end the search, and a specific dword to match with regardless of its location in the data frame 115. This allows a user to bypass header or other data in the data frame 115 when conducting a search for desired dwords.
In operation, a user defines a Start Address 556 and an End Address 557. These values are expressed as a number of dwords deep into a frame 115. Accordingly, the Start Address 556 can be set to any desirable dword value. For example, if a header portion of a frame 115 were 20 dwords deep and a data portion of the frame 115 were 100 dwords deep, the user could specify a Start Address 556 of 21 dwords to ensure that the header portion was skipped. Likewise, the user could specify a Start Address 556 of 100 dwords deep to begin searching 80 dwords deep into the data payload portion of the frame 115. The End Address 557, on the other hand, tells the sliding comparator how deep into the frame 115 to go before ending a comparison operation. Of course in some embodiments, the Start Address 556 may simply be specified to be the start of the frame 115. In addition, in other embodiments, the Start Address 556 and the End Address 557 may be specified at a time prior to the operation of diagnostic component 130.
Sliding comparator module 550 allows a user to define a mask template 590 and a match template 595 for use in the comparison. The user provides a mask value for the desired dword(s) and a corresponding match template that specifies a comparison condition or operation. Unlike comparator 540, sliding comparator module 550 allows the user to define the mask and match templates 590 and 595 to any desired dword or portions of a dword in the portion of the data frame 115 between the defined Start Address 556 and End Address 557. Each mask value and each match template comparison condition may be made up of 32 bits to allow each individual bit of the corresponding dword to be compared. Of course, the comparison condition or operation need not simply be a single value, although in some embodiments the match template 595 may specify a single value as the comparison condition. In other embodiments, the match template 595 may specify that the comparison condition is an operation or the like. For example, the comparison condition may specify that the sliding comparator module 550 subtract five from the present Dword being read, the result being the desired comparison condition. Accordingly, the match template 595 is configured to specify any reasonable comparison condition.
The sliding comparator searches through the data frame 115 until it reaches the End Address 557 or the data frame ends because the frame 115 is shorter than the End Address 557. Any time the comparison condition of the match template and the incoming dword (or portion thereof) ANDed with the mask value are equal, a match is found. This result may then be reported to other components of network diagnostic component 130 as needed.
In some embodiments, sliding comparator module 550 is configured to compare at or work on byte boundaries. As mentioned previously, data frames are typically aligned to dword, or 4 byte, boundaries. Accordingly, there may be four four-byte wide sections that the sliding comparator may compare at or work on. For example, the sliding comparator 550 may compare at or work on a first section consisting of the four bytes of one dword. The sliding comparator 550 may also compare at or work on a second section consisting of the last three bytes of one dword combined with the first byte of the next dword in the frame 115. The sliding comparator 550 may further work on or compare at a third section consisting of the last two bytes of one dword and the first two bytes of the next dword in the frame 115. Finally, the sliding comparator 550 may compare at or work on a fourth section consisting of the last byte of one dword and the first three bytes of the next dword in the frame 115. In such embodiments, if the End Address has not been reached when all four sections have been compared, the process begins again. Accordingly, configuring the sliding comparator to work on byte boundaries allows a user to specify a comparison of portions of two or more dwords, thus providing more flexible searching.
Of course, the sliding comparator module 550 may be configured to operate according to any variation of the previously mentioned frame data boundary alignments and comparison section widths. For example, the sliding comparator module 550 may be configured to operate on frames that are not aligned to dword, or 4 byte, boundaries, but are aligned to more or less than 4 byte boundaries. The sliding comparator module 550 may be configured to compare at or work on data sections more or less than the four bytes wide in size previously described. For example, the sliding frame comparator module 550 could be configured to compare at or work on a data section that is 2 dwords, or 8 bytes, wide that would span 2 or 3 frame data dwords at a time. The sliding comparator 550 may also compare at or work on a data section consisting of a first number of bytes of one dword combined with a second number of bytes of the next dword in the frame 115.
In other embodiments, the sliding comparator may be configured to read primitive dwords in a data frame 115 without affecting a comparison operation. In some protocols, such as SAS and SATA, data frames often consist of Data dwords interspersed with primitive dwords such as ALIGN/NOTIFY and HOLD/HOLDA. In such cases, the sliding comparator typically ignores the primitives and compares the Data dwords only.
For example, suppose that a data frame 115 included Data dword 1, Data dword 2, primitive dword, primitive dword, and Data dword 3 in that order. In that case, when the sliding comparator module 550 gets to Data dword 2, it is configured to slide directly to Data dword 3 and ignore the intervening primitive dwords. This is typically done by keeping the value of Data dword 2 latched to a register 565 that may be included in sliding comparator module 550 or contained in another portion of network diagnostic component 130. Using the register allows the value of Data dword 2 to be available to sliding comparator module 550 as long as it is needed.
Referring again to Figure 5, match comparator module 560, which is implemented in some embodiments, is shown. In such embodiments, the results of both frame comparator module 540 and sliding comparator module 550 may be provided to match comparator module 560. The match comparator module 560 waits to see if the frame comparator module 540 matches on every dword up to its End Address and if sliding comparator module 550 finds a match somewhere between its Start Address 556 and End Address 557. If both matches are found, then match comparator module 560 determines that the data frame 115 is a match. Other operations may then be performed on the data frame 115 by various components of network diagnostic component 130.
Example Methods of Sliding Comparison
Referring now to Figure 6, a flowchart of a method 600 for an in-line diagnostic component to perform a comparison operation on any specified portion of a data frame is illustrated. Method 600 will be described in relation to the network system of Figures 1 and 5, although this is not required. It will be appreciated that method 600 may be practiced in numerous diagnostic network systems. In some embodiments, method 600 may be performed on the fly in real time by the hardware components and modules of the network diagnostic component.
Method 600 includes an act of receiving a network data frame from the first node for communication with the second node, the network data frame comprising one or more data units (act 602). For example, network diagnostic component 130, specifically sliding comparator module 550, may receive network data stream 115 from either node 110 or node 120, which may be SAS/SATA devices. Network data stream 115 may include one or more data units such as Data dwords and may include one or more non- data units such as primitive dwords.
Method 600 also includes an act of using a starting address that specifies where in the data frame to begin a comparison operation (act 604) and an act of using an ending address that specifies where in the data frame to end the comparison operation (act 606). For example, sliding comparator module 550 may use a start address 556 that indicates where in network data stream 115 to begin the comparison operation. In like manner, the sliding comparator module 550 may use an ending address 557 that indicates where in network data stream 115 to end the comparison operation. Advantageously, the ability to define a start address and an end address allows for the comparison of Data dwords (or portions thereof) located at any portion of the data frame between the start and end addresses without having to compare data dwords that are not in the specified portion.
Method 600 further includes an act of using a match template that specifies a particular condition for comparison (act 608). For example, sliding comparator 550 may use match template 595. As described above, and in conjunction with mask template 590, the match template 595 allows a user to define a specific comparison condition for comparison.
Method 600 additionally includes an act of performing a comparison operation by searching for a data unit in the portion of the data frame specified by the starting and ending addresses that at least partially matches the comparison condition of the match template, wherein the data component may occur in any location within the specified portion of the data frame (act 610). For example, sliding comparator module 550 may perform the comparison operation by searching for a data dword (or portion thereof) contained in the specified portion of the data frame that matches the comparison condition of the match template. As mentioned, the dword being compared may be located anywhere within the specified portion of the data frame.
Frame Comparison in a Network Diagnostic Tool
As mentioned previously, in some embodiments, network diagnostic component 130 may include a frame comparator module or other module that may be used to interpret a received network message or data frame. One example of interpretation is detecting whether or not a data frame includes one or more predetermined Data dwords. For example, frame comparators are often designed to allow detection of up to the first 32 Data dwords in a frame. In other words, the frame comparator may detect if a frame contains up to 32 predetermined Data dwords. Of course, the frame comparator may be configured by a user to detect any number less or more than 32 Data dwords if circumstances warrant. Typically, the frame comparator scans an incoming frame (i.e., it interprets the data frame) to determine if the data frame contains the predetermined Data dwords. If a comparison is found, then network diagnostic component 130 may perform other operations on the data frame.
Suppose, for example, that it was predetermined by a user that network diagnostic component 130 interpret the first five Data dwords of a particular data frame. In such a case, as the data frame was received, the frame comparator of network diagnostic component 130 would typically expect that the first five dwords of the data frame would be Data dwords. The frame comparator would lock onto the first five dwords to perform its interpretation operation. In protocols that ensured that the first five dwords were always Data dwords, the interpretation operation would typically succeed as planned.
However, in many protocols, such as SAS and SATA, the network data frame transmitted between nodes 110,120 may be comprised at least partially of Data dwords and protocol specific primitive dwords (also referred to simply as "primitives") that are often interspersed between the Data dwords in a manner that interrupts the proximity and flow of the Data dwords in the data frame. For example, in SAS and SATA, due to a flow control mechanism, large numbers of primitive dwords may be included in the data frame. In addition, other primitive dwords may be included in the data frame due to rate matching. With such protocols, it is not guaranteed that a Data dword will be in a given position in the data frame. For instance, a data frame may have three Data dwords followed by 20 primitive dwords before the fourth Data dword. In such a case, a frame comparator that was trying to interpret the first five Data dwords would find a primitive dword in the fourth and fifth dword locations instead of an expected Data dword. Accordingly, the interpretation operation would typically fail.
Even if a frame comparator of network diagnostic component 130 was designed to allow for some interruptions in the flow of Data dwords in a data frame, there is still a limit to how large the interruptions may be due to memory constraints in the network diagnostic device. For example, suppose a frame comparator of network diagnostic component 130 was configured to interpret up to the 32nd Data dword within the first 70 dwords of the start of the data frame (SOF). If the data frame arrived at network diagnostic component 130 with enough primitive dwords so that the frame comparator could not see the 32nd Data dword within the first 70 dwords since the start of the frame, then the frame comparison would fail.
Such a limit of 70 dwords is just an example, and may be imposed, for instance, if the network diagnostic component 130 needed to perform some operation on the start of the frame after the result of the frame comparison was known. Obviously for an in-line device such as network diagnostic component 130 that is passing through traffic between nodes 110 and 120, there is a finite limit of dwords that can be held inside network diagnostic component 130 before those dwords must be forwarded on from one node to the other due to the memory limitations. In addition, this number of dwords would affect the latency of the traffic through network diagnostic component 130, and it is often desirable for this latency to be kept to a minimum for performance reasons.
Accordingly, embodiments described herein relate to systems and methods for the compacting of data frames. The compaction process allows network diagnostic component 130 to reorder a data frame to move or remove any primitive dwords that interrupt the proximity of at least some of the Data dwords in the data frame. This ensures that the Data dwords in the data frame are in locations that may be interpretable by components of network diagnostic component 130. Although the following embodiments will be described using the SAS/SATA protocols, this is by way of example only and should not be used to limit the scope of the appended claims. Other suitable protocols may also be utilized by the embodiments disclosed herein. The embodiments disclosed herein will be explained with reference to Figure 1 that has already been described and Figure 7 that will be described below.
Example Network Diagnostic Component
Figure 7 illustrates a specific embodiment of network 100. Note that the embodiment of Figure 7 is only one of numerous examples of a network diagnostic component 130 that can be used to implement the embodiments disclosed herein and should not be used to limit the scope of the appended claims. As shown, network diagnostic component 130 includes a frame compaction module 740 and a comparison module 750.
Frame compaction module 740 may be implemented in software, hardware, or any combination of the two. Frame compaction module 740 is configured to receive a data stream or frame including Data dwords interspersed with primitive dwords that act to interrupt the proximity and flow of at least some of the Data dwords. Frame compaction module 740 then performs operations on the data frame to reorder the data frame. The reordering places at least a portion of the Data dwords next to each other by moving or removing any interspersed primitive dwords.
The compacted data stream is then provided to comparison module 750. Comparison module 750 may also be implemented in software, hardware, or any combination of the two, the exact implementation being unimportant to the embodiments described herein. Comparison module 750 is configured to interpret the data frame received from frame compaction module 740 and perform comparison operations on the data frame if circumstances warrant.
As mentioned above, comparison module 750 may be designed to compare a predetermined number of Data dwords within a total number of dwords of the start of a data frame. For example, in one embodiment, comparison module 750 is configured to compare up to the 32nd Data dword within 70 dwords of the start of a data frame. Note that the predetermined number of Data dwords and total dwords may be any reasonable value determined by a user of network diagnostic component 130. Accordingly, any reference to a specific number of Data dwords and total dwords for comparison and compaction purposes is for illustration only.
Example Frame Compaction Module
Referring now to Figure 8, a specific embodiment 800 of a frame compaction module is illustrated. Frame compaction module 800 may correspond to frame compaction module 740 of Figure 7, although this is not required. Note that the specific components, component sizes, etc. described in relation to Figure 8 are for illustration only and should not be used to limit the scope of the embodiments disclosed herein.
Frame compaction module 800 includes a detect module 801. Detect module 801, which may be implemented as software, hardware, or any combination of the two, is configured to receive a data frame 805 from a node, such as nodes 110, 120, and to reorder data frame 805 by placing portions of the data frame 805 in one or more FIFOs as will be explained in more detail to follow. Detect module 801 may also be configured to control the flow of dwords from the FIFOs. In some embodiments, detect module 801 is a state machine.
Frame compaction module 800 also includes a frame FIFO buffer 810 and a pass- through FIFO buffer 820. In one embodiment, frame FIFO 810 is configured to have a depth or size of 32 dwords and pass-through FIFO 820 is configured to have a depth or size of 70 dwords. Note that these FIFO depths are specific to embodiments where comparison module 750 is designed to interpret the 32nd Data dword within 70 dwords of the start of the SAS or SATA data frame. The FIFO depths were chosen to ensure that comparison module 750 is able to interpret the frame once it has passed through frame compaction module 800. For this specific example, 70 dwords was chosen to allow for ALIGN and NOTIFY primitives that may be interspersed among the first 32 data dwords of the frame, running in the SAS or SATA protocol at 3 gigabits per second, as these primitives may not be removed from the data frame in order to compress it further. In other embodiments, frame FIFO 810 and pass-through FIFO 820 may have other depths. Accordingly, the embodiments disclosed herein contemplate FIFOs of various depths as operational and design parameters warrant. Note that in embodiments that do not implement the SAS or SATA protocol, there may or may not be dwords that act like ALIGN/NOTIFY dwords in the network traffic.
In some embodiments, frame compaction module 800 may include a primitive FIFO buffer 830. Primitive FIFO 830 may be any required depth. In the present example, primitive FIFO 830 is configured to have a depth of 70 dwords as will be explained in more detail to follow. In other embodiments, primitive FIFO 830 may have other depths as necessary.
Frame compactor 800 further includes a counter 840 and a counter 850. Counters 840 and 850 are configured to count dwords that are placed in frame FIFO 810 and pass- through FIFO 820 respectively. The counters may be implemented as any reasonable counter. Frame Compaction in SATA
The specific operation of frame compaction module 800 for the SATA protocol in accordance with one embodiment will now be explained with reference to Figure 8. A data frame 805 including Data dwords interspersed with primitive dwords that interrupt the proximity and flow of the Data dwords is received by detect module 801. Detect module 801 first looks for an SOF (Start of Frame) primitive dword, and then determines if each following dword is a Data dword or a primitive dword.
When an SOF (Start of Frame) primitive dword is detected by detect module 801, it is placed into frame FIFO 810 and counter 840 is started. Simultaneously, the SOF primitive dword is placed in pass-through FIFO 820 and counter 850 is started. The SOF is a primitive dword, but it is considered a Data dword for purposes of the embodiments disclosed herein, as it is needed along with another 31 Data dwords for comparison at comparison module 750. As mentioned previously, in some embodiments, comparison module 750 compares up to 32 Data dwords within the first 70 dwords of data frame 805.
Each Data dword that is detected by detection module 801 after the SOF dword is also simultaneously placed in frame FIFO 810 and pass-through FIFO 820. As the Data dword is placed in each of these FIFOs, the counters 840 and 850 are incremented by one.
In addition, each primitive dword that is detected by detection module 801 is placed only in the pass-through FIFO 820. Some of these primitive dwords cause counter 850 to be incremented by one. Counter 850 keeps track of the total number of non- ALIGN/NOTIFY dwords in the FIFO 820 at any given time. However, any ALIGN/NOTIFY primitive dwords, which have special rate matching and clock retiming functions in the SAS and SATA protocols, are not counted. The ALIGN/NOTIFY primitive dwords are not altered by frame compaction module 140 in some embodiments to preserve the rate matching and clock retiming functions.
This process is continued as both Data dwords and primitive dwords are detected by detection module 801. After 70 dwords, the SOF dword will reach the output of pass- through FIFO 820 as pass-through FIFO 820 has a depth of 70 dwords in the example embodiment. At this point, detection module 801 will check to see how many times counter 840 has incremented. If the end of the frame was already detected, meaning that the frame was shorter than 32 Data dwords, or if counter 840 has incremented to 32 counts, which indicates that there are 32 Data dwords in both FIFOs 810 and 820, the contents of pass-through FIFO 820 are allowed to pass without any reordering as represented by data frame 815 to comparison module 750. In addition, all dwords received after this time are allowed to pass until the frame is complete and the process begins again upon detection of another SOF dword. This is because data frame 815 will meet the design requirement of either ending within 70 dwords of the start of the frame, or having 32 Data dwords within 70 dwords of the start of the frame. As mentioned above, this will allow comparison module 750 to properly interpret frame 815. Frame FIFO 810 is emptied and the counters are reset. In addition, all traffic continues to flow through pass-through FIFO 820, including traffic between frames, in order to preserve the constant unaltered flow of traffic.
On the other hand, if detect module 801 does not find that counter 840 has incremented to 32, which indicates that there are not 32 Data dwords in the first 70 dwords of the frame, then the data frame is not passed from FIFO 820 unaltered. Instead, any time a non-ALIGN/NOTIFY dword reaches the output of pass-through FIFO 820, including the SOF dword, the dword is replaced by a SATA_X_RDY primitive dword, which is then passed to comparison module 750. The SATA_X_RDY primitive dwords are ignored by comparison module 750, which looks for the SOF dword before beginning its interpretation of the data frame. The ALIGN/NOTIFY primitive dwords that reach the bottom of pass-through FIFO 820 are passed through unchanged to preserve rate matching and clock retiming as mentioned previously.
For example, suppose a data frame included an SOF primitive dword followed by a Data dword, an ALIGN/NOTIFY primitive dword, a Data dword, and a non- ALIGN/NOTIFY primitive dword in that order. Note that there may also be any number of additional dwords that follow the non-ALIGN/NOTIFY primitive dword. Further suppose that counter 840 had not incremented to 32 by the time the SOF dword reached the output of FIFO 820. In that case, detect module 801 would cause that a SATA_X_RDY primitive dword replace and be passed instead of the SOF dword. In the next time period, a SATA XJRDY primitive dword would be sent in place of the first Data dword. The ALIGN/NOTIFY primitive, however, would be passed as described above. Two SATA_X_RDY primitive dwords would also be passed instead of the second Data dword and the non-ALIGN/NOTIFY primitive dword.
Once detect module 801 detects the end of the frame or determines that counter 840 has incremented to 32 (which indicates that there are 32 Data dwords in FIFO 810), then SATA_X_RDY primitive dwords are still sent for each non-ALIGN/NOTIFY dword. This occurs until counter 850, which is no longer incremented but begins to decrement every time a SATA_X_RDY is sent after the end of the frame is detected or counter 840 reaches 32, decrements to the current value of counter 840. This value is 32 unless the end of the frame was detected before counter 840 reached 32. This is done to ensure that after the Data dwords are sent from FIFO 810 as will be explained, the first dword sent from FIFO 820 will be whatever dword comes directly after the end of the frame or Data dword 32 in the original frame 805. In other words, use of counter 850 helps ensure that there is not a gap between the end of the frame or 32nd Data dword, and what follows when the contents are sent from the frame FIFO 810. Also, when the end of the frame is detected or counter 840 reaches 32, Data dwords are no longer placed into frame FIFO 810, but all dwords are still placed into pass-through FIFO 820, and counter 840 is no longer incremented.
Once counter 850 has decremented as described, the contents of frame FIFO 810 are sent as frame 815 to comparison module 750. This is performed by sending one Data dword out of frame FIFO 810 each time a non-ALIGN/NOTIFY dword is detected at the output of pass-through FIFO 820. All ALIGN/NOTIFY primitives detected at the bottom of pass-through FIFO 820 are still passed as explained previously. The contents of pass- through FIFO 820 and any new dwords received after this point are also passed through to comparison module 750 as part of data frame 815 after the contents of frame FIFO 810 are passed, and the counters are reset. This process ensures that the required 32 Data dwords, or less if the frame was shorter than 32 dwords, are received by comparison module 750 within 70 dwords of the start of the frame, thus allowing the comparison module 750 to properly interpret the data frame. The frame compaction operation may then be performed anytime a new SOF dword is detected by detection module 801. Frame Compaction in SAS
The specific operation of frame compaction module 800 for the SAS protocol in accordance with one embodiment will now be explained with reference to Figure 8. This operation is similar to the operation discussed above in relation to the embodiment described for the SATA protocol. This embodiment, however, utilizes the primitive FIFO 830 as well as the two FIFOs used in the SATA embodiment.
As in the SATA operation, a frame 805 including Data dwords interspersed with primitive dwords that interrupt the proximity and flow of the Data dwords is received by detect module 801. Detect module 801 first looks for an SOF primitive dword (Start of Frame), and then determines if each following dword is a Data dword or a primitive dword.
When an SOF primitive dword is detected by detect module 801, it is placed into frame FIFO 810 and counter 840 is started. Simultaneously, the SOF primitive dword is placed in pass-through FIFO 820. Note that in the SAS operation counter 850 is not used as will be described in more detail to follow. Each Data dword that is detected by detection module 801 after the SOF dword is also simultaneously placed in frame FIFO 810 and pass-through FIFO 820. As the Data dword is placed in each of the FIFOs, the counter 840 is incremented by one.
In addition, each non-ALIGN/NOTIFY primitive dword detected by detection module 801 is simultaneously placed in the pass-through FIFO 820 and the primitive FIFO 830. The non-ALIGN/NOTIFY primitives may include important information that should ultimately be transmitted between nodes 110,120 when operation is in the SAS protocol, thus necessitating their collection in FIFO 830. The ALIGN/NOTIFY primitives are only placed in pass-through FIFO 820. As in the SATA operation, the ALIGN/NOTIFY primitives have rate matching and clock retiming functions and should not be altered by frame compaction module 140 in the example embodiment.
This process is continued as Data dwords, non-ALIGN/NOTIFY primitive dwords, and ALIGN/NOTIFY primitive dwords are detected by detection module 801. After 70 dwords, the SOF dword will reach the output of pass-through FIFO 820. At this point, detection module 801 will check to see how many times counter 840 has incremented. If the end of the frame was already detected, meaning that the frame was shorter than 32 Data dwords, or if counter 840 has incremented to 32 counts, which indicates that there are 32 Data dwords in both FIFOs 810 and 820, then the contents of pass-through FIFO 820 are allowed to pass without any modification as represented by frame 815 to comparison module 750. In addition, all dwords received after this time will also be allowed to pass until the data frame is complete and the process begins again. This is because frame 815 will meet the requirement of either ending within 70 dwords of the start of the data frame, or having 32 Data dwords within 70 dwords of the start of the data frame. As mentioned above, this will allow comparison module 750 to interpret frame 815. Frame FIFO 810 and Primitive FIFO 830 are emptied and the counter 840 is reset.
On the other hand, if detect module 801 does not find that counter 840 has incremented to 32, which indicates that there are not 32 Data dwords in the first 70 dwords of the frame, then the contents of pass-through FIFO 820 are not automatically passed. Instead, a primitive dword from primitive FIFO 830 is passed any time a non- ALIGN/NOTIFY dword reaches the output of pass-through FIFO 820. This ensures that all of the non-ALIGN/NOTIFY primitives are passed. As with the SATA case, the ALIGN/NOTIFY primitives are passed when they reach the bottom of pass-through FIFO 820. As explained previously, comparator module 750 does not begin its operation until seeing an SOF dword. Once detect module 801 detects the end of the frame or determines that counter 840 has incremented to 32 (which indicates that there are 32 Data dwords in frame FIFO 810), the contents of frame FIFO 810 are sent as data frame 815 to comparison module 750, dwords are no longer placed in frame FIFO 810 or primitive FIFO 830, and counter 840 is cleared. This is performed by sending one word out of frame FIFO 810 each time a non- ALIGN/NOTIFY dword is detected at the output of pass-through FIFO 820. All ALIGN/NOTIFY primitives detected at the bottom of pass-through FIFO 820 are still passed. Once frame FIFO 810 is emptied, primitive FIFO 830 is also emptied of any remaining non-ALIGN/NOTIFY primitive dwords to ensure that all non- ALIGN/NOTIFY primitives are also passed as part of or after data frame 815. This is performed by sending one word out of primitive FIFO 830 each time a non- ALIGN/NOTIFY dword is detected at the output of FIFO 820. All ALIGN/NOTIFY primitives detected at the bottom of pass-through FIFO 820 are still passed. AU newer contents of pass-through FIFO 820 and any new dwords received after this point are also passed through to comparison module 750 as part of or after data frame 815, and the counter is reset. This process ensures that the required 32 Data dwords, or less if the frame was shorter than 32 dwords, are received by comparison module 750 within 70 dwords of the start of the frame, thus allowing the comparison module 750 to properly interpret the data frame. The frame compaction operation may then be performed anytime a new SOF is detected by detect module 801.
Example Methods of Frame Compaction
Referring now to Figure 9, a flowchart of a method 900 for an in-line diagnostic component to reorder or compress network traffic is illustrated. Method 900 will be described in relation to the network system of Figures 1, 7 and 8, although this is not required. It will be appreciated that method 400 may be practiced in numerous diagnostic network systems.
Method 900 includes an act of receiving a network data frame from the first node for communication with the second node that includes a plurality of data units interspersed with one or more non-data units that interrupt the proximity and flow of the data units (act 902). For example, network diagnostic component 130, specifically detect module 801, may receive frame 805. As mentioned, frame 805, which may be of the SAS or SATA protocol, may include Data dwords (data units) and one or more primitive dwords (non-data units). The primitive dwords of frame 805 may be interspersed among the Data dwords in a manner that interrupt the proximity and flow of the Data dwords. This interruption of the Data dwords may make it so that comparison module 750 may not properly interpret frame 805.
Method 900 also includes an act of reordering the network data frame by removing or moving at least some of the non-data units that that are interspersed with the plurality of data units (act 904). For example, detect module 801, which may be a state machine in some embodiments, may reorder frame 805 into a frame 815 that is interpretable by comparison module 750. The reordering causes a predetermined number of Data dwords to be placed next to each other with few or no primitive dwords between them, except possibly for primitive Dwords such as ALIGN/NOTIFY that may not be moved or removed. In other words, the network data frame has been reordered by the removal of at least some of the non- ALIGN/NOTIFY primitive dwords from between the predetermined number of Data dwords and any ALIGN/NOTIFY primitive dwords. In some embodiments, the predetermined number of Data dwords is 32, which allows comparison module 750 to compare up to 32 Data dwords deep within the first 70 dwords of frame 815.
Turning now to Figure 10, a more particular method 1000 for reordering the network data frame is illustrated. Method 1000 includes an act of placing a predetermined number of data units in a first FIFO buffer (act 1002). For example, detect module 801 may place a predetermined number of Data dwords in frame FIFO buffer 810, which may be 32 dwords in depth in some embodiments. As mentioned previously, in some embodiments, the first 32 Data dwords of frame 805 received by detect module 801 may be placed in frame FIFO buffer 810.
Method 1000 also includes an act of placing at least the predetermined number of data units and the one or more interspersed non-data units, in a second FIFO buffer (act 1004). For example, detect module 801 may place all traffic, including the predetermined number of Data dwords and the primitive dwords of frame 805 into pass-through FIFO buffer 820, which may be 70 dwords in depth in some embodiments. Detect module 801 then continually removes the bottom dword of the pass-through FIFO 820 and either passes it on or replaces it according to the conditions described below, so that the pass- through FIFO 820 is always full and contains a constant number of dwords at all times, which may be 70 dwords in some embodiments.
Method 1000 further includes an act of incrementing a counter every time one of the predetermined number of data units is placed in the first FIFO buffer (act 1006). For example, counter 840 may begin to count when detect module 801 places an SOF primitive into frame FIFO 810. The counter 840 may then increment any time one of the predetermined number of Data dwords is placed in FIFO 810, which in some embodiments will be the first 32 Data dwords of frame 805.
Method 1000 additionally includes an act of replacing with other non-data units the predetermined data units and at least some of the non-data units as they are read from the second FIFO buffer if the counter has not incremented to the predetermined number and the end of the frame has not been detected (act 1008),. For example, detect module 801 may replace a Data dword and a non- ALIGN/NOTIFY primitive dword any time one of these dwords reaches the bottom of pass-through FIFO 820 before the end of the frame has been detected and before counter 840 has incremented to the predetermined number, which may be 32 in some embodiments. As previously described, the Data dwords and non-ALIGN/NOTIFY primitive dwords may be replaced by other non-data Dwords such as SATA_X_RDY primitive dwords in some embodiments. The SATA_X_RDY primitive dwords are then passed to comparison module 750 as long as the end of the frame has not been detected and counter 840 has not incremented to 32 by the time that the first frame dword, for example the SOF, reaches the bottom of the second FIFO buffer. As mentioned, ALIGN/NOTIFY primitive dwords are typically passed unaltered or replaced. However, if the end of the frame is detected or if the counter 840 reaches the predetermined number by the time the first frame dword, for example the SOF, reaches the bottom of the pass-through FIFO 820, then the contents of the frame FIFO 810 are cleared, the counters 840 and 850 are cleared, and the traffic continues to pass through pass-through FIFO 820 unaltered while detect module 801 looks for the next frame to restart the process with. In this way, the traffic is not altered whenever a frame is detected that already has its ending or its first 32 data dwords located within 70 dwords starting with the SOF.
Method 1000 further includes an act of passing the data units in the first FIFO buffer when the end of the frame is detected or the counter has incremented to the predetermined value, wherein at least some of the non-data units are no longer interspersed with the predetermined number of data units (act 1010). For example, detect module 801 may pass the Data dwords placed in frame FIFO 810 as frame 815 to comparison module 150 when the end of the frame is detected or counter 840 reaches the predetermined number such as 32. For instance, detect module 801 passes a Data dword from frame FIFO 810 every time it detects a non-ALIGN/NOTIFY primitive dword at the bottom of pass-through FIFO 820. As mentioned, ALIGN/NOTIFY primitive dwords are typically passed unaltered. In this manner, at least some of the non- ALIGN/NOTIFY primitive dwords are no longer interspersed with the Data dwords passing from frame FIFO 810. Also, at the point when the end of the frame is detected or the counter 840 reaches the predetermined value, counter 840 is no longer incremented, and no further dwords are placed into frame FIFO 810, but all incoming dwords continue to be placed into pass-through FIFO 820.
Method 1000 also includes an act of passing the contents of the second FIFO buffer unaltered after passing the predetermined number of data units from the first FIFO buffer (act 1012). For example, after all data dwords have been sent from frame FIFO 810, dwords are only passed from pass-through FIFO 820 to comparator 750 until detect module 801 detects another SOF and the process starts again. Accordingly, frame 805 has been reordered as frame 815 in such a way that the data frame can be interpreted by comparison module 750. For instance, in the embodiments described above, the reordering of frame 805 ensures that the end of the frame or the first 32 Data dwords are within the first 70 dwords received by comparison module 750.
Method 1000 further includes incrementing a second counter, for example counter 850, every time a data dword or a non- ALIGN/NOTIFY dword is placed in pass-through FIFO 320. Counter 350 then stops incrementing and begins to decrement any time a Data dword or a non-ALIGN/NOTIFY primitive dword is altered after counter 840 has incremented to the predetermined number or the end of the frame has been detected. In such embodiments, detect module 801 continues to replace the Data dwords and the non- ALIGN/NOTIFY primitive dwords coming out of pass-through FIFO 820 and to pass the replaced dwords to comparison module 750 until the counter 850 has decremented to a count that matches the number counted by counter 840. Then all Data dwords are sent from frame FIFO 810, and the counters are reset. In this way, the first dword sent from pass-through FIFO buffer 820 after frame FIFO buffer 810 has been emptied will be whatever dword came directly after the end of the frame or the Data dword 32 in the frame 805.
Turning now to Figure 11, an additional method 1100 for reordering the network data frame is illustrated. Method 1100 includes an act of placing a predetermined number of the plurality of data units in a first FIFO buffer (act 1102). For example, detect module 801 may place a predetermined number of Data dwords in frame FIFO buffer 810, which may be 32 dwords in depth in some embodiments. As mentioned previously, in some embodiments, the first 32 Data dwords of frame 805 received by detect module 801 may be placed in frame FIFO buffer 810.
Method 1100 also includes an act of placing at least the predetermined number of data units and the one or more interspersed non-data units, in a second FIFO buffer (act 1104). For example, detect module 801 may place all traffic, including the predetermined number of Data dwords and the primitive dwords of frame 805 into pass-through FIFO buffer 820, which may be 70 dwords in depth in some embodiments. Detect module 801 then continually removes the bottom dword of the pass-through FIFO 820 and either passes it on or discards it according to the conditions described below, so that the pass- through FIFO 820 is always full and contains a constant number of dwords at all times, which may be 70 dwords in some embodiments.
Method 1100 further includes an act of placing at least some of the non-data units in a third FIFO buffer (act 1106). For example, detect module 801 may place the non- ALIGN/NOTIFY primitive dwords of frame 805 into primitive FIFO buffer 830, which may be 70 dwords in depth in some embodiments.
Method 1100 additionally includes an act of incrementing a counter every time one of the predetermined number of data units is placed in the first FIFO buffer (act 1108). For example, counter 840 may begin to count when detect module 801 places an SOF primitive into frame FIFO 810. The counter 840 may then increment any time one of the predetermined number of Data dwords is placed in FIFO 810, which in some embodiments will be the first 32 Data dwords of frame 805.
Method 1100 further includes an act of passing a non-data unit placed in the third FIFO and not passing the predetermined number of data units and at least some of the non-data units read from the second FIFO buffer if the end of the frame has not been detected and the counter has not incremented to the predetermined number (act 1110). For example, detect module 801 may pass one of the non- ALIGN/NOTIFY primitive dwords placed in primitive FIFO buffer 830 any time a Data dword or a non- ALIGN/NOTIFY primitive dword reaches the bottom of pass-through FIFO 820 before the end of the frame has been detected and counter 840 has incremented to the predetermined number, which may be 32 in some embodiments. Note that ALIGN/NOTIFY primitive dwords are passed when they reach the bottom of pass- through FIFO 820. However, if the end of the frame is detected or the counter 840 reaches the predetermined number by the time the first frame dword, for example the SOF, reaches the bottom of the pass-through FIFO 820, then the contents of the frame FIFO 810 and the primitive FIFO 830 are cleared, the counter 840 is cleared, and the traffic continues to pass through the pass-through FIFO 820 unaltered while detect module 801 looks for the next frame to restart the process with. In this way, the traffic is not altered whenever a frame is detected that already has its ending or its first 32 data dwords located within 70 dwords starting with the SOF.
Method 1100 also includes the act of passing the data units in the first FIFO buffer when the end of the frame has been detected or the counter has incremented to the predetermined value, the data units being passed from the first FIFO buffer with fewer or no non-data units interspersed between them (act 1112). For example, detect module 801 may pass the Data dwords placed in frame FIFO 810 as frame 815 to comparison module 750 when the end of the frame is detected or counter 840 reaches the predetermined number such as 32. For instance, detect module 801 passes a Data dword from frame FIFO 810 every time it detects a non-ALIGN/NOTIFY primitive dword at the bottom of pass-through FIFO 820. As mentioned, ALIGN/NOTIFY primitive dwords are typically passed unaltered. In this manner, the data units are passed from frame FIFO 810 with fewer or no primitive dwords interspersed between them as the non- ALIGN/NOTIFY primitive dwords have been moved to other portions of the data frame or after the data frame. Also, at the point when the end of the frame is detected or the counter 840 reaches the predetermined value, no further dwords are placed into frame FIFO 810, but all incoming dwords continue to be placed into pass-through FIFO 820.
Method 1100 further includes the acts of passing any remaining contents of the third FIFO buffer in place of at least some of the data or non-data units read from the second FIFO buffer (act 1114), resetting the counter 840, and passing the contents of the second FIFO buffer after the third FIFO buffer is empty (act 1116). For example, after all data dwords have been sent from frame FIFO 810, the contents of primitive FIFO 830 are then sent in place of each non-ALIGN/NOTIFY dword at the bottom of pass-through FIFO 820, until primitive FIFO 830 is empty. At this point dwords are only passed from pass-through FIFO 820 to comparator 750 until detect module 801 detects another SOF and the process starts again. Accordingly, frame 805 has been reordered as frame 815 in such a way that the data frame can be interpreted by comparison module 750. For instance, in the embodiments described above, the reordering of frame 805 ensures that the end of the frame or the first 32 Data dwords are within the first 70 dwords received by comparison module 750 starting with the SOF. In some embodiments, frame compaction module 800 or another portion of network diagnostic component 130 may also include an enable module 802. Enable module 802 may be software, hardware, or any combination of the two. Although enable module 802 is illustrated as being a stand alone module, in some embodiments enable module 802 may be part of another module or component of frame compaction module 800 or another portion of network diagnostic component 130. In operation, enable module allows for the enablement or non-enablement of frame compaction on the fly. For example, in some embodiments network diagnostic component 130 is configured to operate on both the SAS and SATA protocols. Enable module 802 may enable frame compaction in SAS, SATA, in both SAS and SATA or in neither SAS and SATA. In this way if network diagnostic component 130 is set only to look for and operate on a SAS frame, enable module 802 may have the "SATA enable" turned off, so that if a SATA frame comes along, network diagnostic component 130 ignores it even if the first 32 data words are not proximate. In another example, enable module 802 may cause both enables to be turned off if the network diagnostic component 130 is currently looking for a non- data word and not a frame at all. This feature further reduces the number of times that network diagnostic component 130 alters the traffic when it is not absolutely necessary.
Example Network Diagnostic Functions
As mentioned above, the network diagnostic component 130 may perform a variety of network diagnostic functions. The network diagnostic component 130 may be configured to function as any combination of: a bit error rate tester, a protocol analyzer, a generator, a jammer, a monitor, and any other appropriate network diagnostic device. Bit Error Rate Tester
In some embodiments, the network diagnostic component 130 may function as a bit error rate tester. The bit error rate tester may generate and/or transmit an initial version of a bit sequence via a communication path. If desired, the initial version of the bit sequence may be user selected. The bit error rate tester may also receive a received version of the bit sequence via a communication path.
The bit error rate tester compares the received version of the bit sequence (or at least a portion of the received version) with the initial version of the bit sequence (or at least a portion of the initial version). In performing this comparison, the bit error rate test may determine whether the received version of the bit sequence (or at least a portion of the received version) matches and/or does not match the initial version of the bit sequence (or at least a portion of the initial version). The bit error tester may thus determine any differences between the compared bit sequences and may generate statistics at least partially derived from those differences. Examples of such statistics may include, but are not limited to, the total number of errors (such as, bits that did not match or lost bits), a bit error rate, and the like.
It will be appreciated that a particular protocol specification may require a bit error rate to be less than a specific value. Thus, a manufacturer of physical communication components and connections (such as, optical cables), communication chips, and the like may use the bit error rate tester to determine whether their components comply with a protocol-specified bit error rate. Also, when communication components are deployed, the bit error tester may be used to identify defects in a deployed physical communication path, which then may be physically inspected. Protocol Analyzer
In some embodiments, the network diagnostic component 130 may function as a protocol analyzer (or network analyzer), which may be used to capture data or a bit sequence for further analysis. The analysis of the captured data may, for example, diagnose data transmission faults, data transmission errors, performance errors (known generally as problem conditions), and/or other conditions.
As described below, the protocol analyzer may be configured to receive a bit sequence via one or more communication paths or channels. Typically, the bit sequence comprises one or more network messages, such as, packets, frames, or other protocol-adapted network messages. Preferably, the protocol analyzer may passively receive the network messages via passive network connections.
The protocol analyzer may be configured to compare the received bit sequence (or at least a portion thereof) with one or more bit sequences or patterns. Before performing this comparison, the protocol analyzer may optionally apply one or more bit masks to the received bit sequence. In performing this comparison, the protocol analyzer may determine whether all or a portion of the received bit sequence (or the bit-masked version of the received bit sequence) matches and/or does not match the one or more bit patterns. In one embodiment, the bit patterns and/or the bit masks may be configured such that the bit patterns will (or will not) match with a received bit sequence that comprises a network message having particular characteristics — such as, for example, having an unusual network address, having a code violation or character error, having an unusual timestamp, having an incorrect CRC value, indicating a link re-initialization, and/or having a variety of other characteristics. The protocol analyzer may detect a network message having any specified characteristics, which specified characteristics may be user-selected via user input. It will be appreciated that a specified characteristic could be the presence of an attribute or the lack of an attribute. Also, it will be appreciated that the network analyzer may detect a network message having particular characteristics using any other suitable method.
In response to detecting a network message having a set of one or more characteristics, the network analyzer may execute a capture of a bit sequence ~ which bit sequence may comprise network messages and/or portions of network messages. For example, in one embodiment, when the network analyzer receives a new network message, the network analyzer may buffer, cache, or otherwise store a series of network messages in a circular buffer. Once the circular buffer is filled, the network analyzer may overwrite (or otherwise replace) the oldest network message in the buffer with the newly received network message or messages. When the network analyzer receives a new network message, the network analyzer may detect whether the network message has a set of one or more specified characteristics. In response to detecting that the received network message has the one or more specified characteristics, the network analyzer may execute a capture (1) by ceasing to overwrite the buffer (thus capturing one or more network messages prior to detected message), (2) by overwriting at least a portion or percentage of the buffer with one or more newly received messages (thus capturing at least one network message prior to the detected message and at least one network message after the detected message), or (3) by overwriting the entire buffer (thus capturing one or more network messages after the detected message). In one embodiment, a user may specify via user input a percentage of the buffer to store messages before the detected message, a percentage of the buffer to store messages after the detected message, or both. In one embodiment, a protocol analyzer may convert a captured bit stream into another format.
In response to detecting a network message having a set of one or more characteristics, a network analyzer may generate a trigger adapted to initiate a capture of a bit sequence. Also, in response to receiving a trigger adapted to initiate a capture of a bit sequence, a network analyzer may execute a capture of a bit sequence. For example, the network analyzer may be configured to send and/or receive a trigger signal among a plurality of network analyzers. In response to detecting that a received network message has the one or more specified characteristics, a network analyzer may execute a capture and/or send a trigger signal to one or more network analyzers that are configured to execute a capture in response to receiving such a trigger signal. Further embodiments illustrating trigger signals and other capture systems are described in United States Patent Application 10/881,620 filed June 30, 2004 and entitled PROPAGATION OF SIGNALS BETWEEN DEVICES FOR TRIGGERING CAPTURE OF NETWORK DATA, which is hereby incorporated by reference herein in its entirety.
It will be appreciated that a capture may be triggered in response to detecting any particular circumstance ~ whether matching a bit sequence and bit pattern, receiving an external trigger signal, detecting a state (such as, when a protocol analyzer's buffer is filled), detecting an event, detecting a multi-network-message event, detecting the absence of an event, detecting user input, or any other suitable circumstance.
The protocol analyzer may optionally be configured to filter network messages (for example, network messages having or lacking particular characteristics), such as, messages from a particular node, messages to a particular node, messages between or among a plurality of particular nodes, network messages of a particular format or type, messages having a particular type of error, and the like. Accordingly, using one or more bit masks, bit patterns, and the like, the protocol analyzer may be used identify network messages having particular characteristics and determine whether to store or to discard those network messages based at least in part upon those particular characteristics.
The protocol analyzer may optionally be configured to capture a portion of a network message. For example, the protocol analyzer may be configured to store at least a portion of a header portion of a network message, but discard at least a portion of a data payload. Thus, the protocol analyzer may be configured to capture and to discard any suitable portions of a network message.
It will be appreciated that a particular protocol specification may require network messages to have particular characteristics. Thus, a manufacturer of network nodes and the like may use the protocol analyzer to determine whether their goods comply with a protocol. Also, when nodes are deployed, the protocol analyzer may be used to identify defects in a deployed node or in other portions of a deployed network. Generator
In some embodiments, the network diagnostic component 130 may function as a generator. The generator may generate and/or transmit a bit sequence via one or more communication paths or channels. Typically, the bit sequence comprises network messages, such as, packets, frames, or other protocol-adapted network messages. The network messages may comprise simulated network traffic between nodes on a network. In one embodiment, the bit sequence may be a predefined sequence of messages. Advantageously, a network administrator may evaluate how the nodes (and/or other nodes on the network) respond to the simulated network traffic. Thus, the network administrator may be able to identify performance deviations and take appropriate measures to help avoid future performance deviations.
In one embodiment, the generator may execute a script to generate the simulated network traffic. The script may allow the generator to dynamically simulate network traffic by functioning as a state machine or in any other suitable manner. For example, a script might include one or more elements like the following: "In state X, if network message A is received, transmit network message B and move to state Y." The generator may advantageously recognize network messages (and any characteristics thereof) in any other suitable manner, including but not limited to how a protocol analyzer may recognize network messages (and any characteristics thereof). The script may also include a time delay instructing the generator to wait an indicated amount of time after receiving a message before transmitting a message in response. In response to receiving a message, a generator may transmit a response message that is completely predefined. However, in response to receiving a message, a generator may transmit a response message that is not completely predefined, for example, a response message that includes some data or other portion of the received message. Jammer
In some embodiments, the network diagnostic component 130 may function as a jammer. The jammer may receive, generate, and/or transmit one or more bit sequences via one or more communication paths or channels. Typically, the bit sequences comprise network messages (such as, packets, frames, or other protocol-adapted network messages) comprising network traffic between nodes on a network. The jammer may be configured as an inline component of the network such that the jammer may receive and retransmit (or otherwise forward) network messages.
Prior to retransmitting the received network messages, the jammer may selectively alter at least a portion of the network traffic, which alterations may introduce protocol errors or other types of errors.
By altering at least a portion of the network traffic, the jammer may generate traffic, which traffic may be used to test a network. For example, a network administrator may then evaluate how the nodes on the network respond to these errors. For example, a network system designer can perform any one of a number of different diagnostic tests to make determinations such as whether a system responded appropriately to incomplete, misplaced, or missing tasks or sequences; how misdirected or confusing frames are treated; and/or how misplaced ordered sets are treated. In some embodiments, the network diagnostic component 130 may include any suitable jamming (or other network diagnostic system or method) disclosed in U.S. Patent No. 6,268,808 Bl to Iryami et al., entitled HIGH SPEED DATA MODIFICATION SYSTEM AND METHOD, which is hereby incorporated by reference herein in its entirety.
In one embodiment, to determine which network messages to alter, the jammer may be configured to compare a received bit sequence ~ such as a network message ~ (or a portion of the received bit sequence) with one or more bit sequences or patterns. Before performing this comparison, the jammer may optionally apply one or more bit masks to the received bit sequence. In performing this comparison, the jammer may determine whether all or a portion of the received bit sequence (or the bit-masked version of the received bit sequence) matches and/or does not match the one or more bit patterns. In one embodiment, the bit patterns and/or the bit masks may be configured such that the bit patterns will (or will not) match with a received bit sequence (or portion thereof) when the received bit sequence comprises a network message from a particular node, a message to a particular node, a network message between or among a plurality of particular nodes, a network message of a particular format or type, and the like. Accordingly, the jammer may be configured to detect a network message having any specified characteristics. Upon detection of the network message having the specified characteristics, the jammer may alter the network message and/or one or more network messages following the network message. Monitor
In some embodiments, the network diagnostic component 130 may function as a monitor, which may be used to derive statistics from one or more network messages having particular characteristics, one or more conversations having particular characteristics, and the like.
As described below, the monitor may be configured to receive a bit sequence via one or more communication paths or channels. Typically, the monitor passively receives the network messages via one or more passive network connections.
To determine the network messages and/or the conversations from which statistics should be derived, the monitor may be configured to compare a received bit sequence ~ such as a network message — (or a portion of the received bit sequence) with one or more bit sequences or patterns. Before performing this comparison, the monitor may optionally apply one or more bit masks to the received bit sequence. In performing this comparison, the monitor may determine whether all or a portion of the received bit sequence (or the bit-masked version of the received bit sequence) matches and/or does not match the one or more bit patterns. In one embodiment, the bit patterns and/or the bit masks may be configured such that the bit patterns will (or will not) match with a received bit sequence (or portion thereof) when the received bit sequence comprises a network message from a particular node, a network message to a particular node, a network message between or among a plurality of particular nodes, a network message of a particular format or type, a network message having a particular error, and the like. Accordingly, the monitor may be configured to detect a network message having any specified characteristics ~ including but not limited to whether the network message is associated with a particular conversation among nodes.
Upon detecting a network message having specified characteristics, the monitor may create and update table entries to maintain statistics for individual network messages and/or for conversations comprising packets between nodes. For example, a monitor may count the number of physical errors (such as, bit transmission errors, CRC errors, and the like), protocol errors (such as, timeouts, missing network messages, retries, out of orders), other error conditions, protocol events (such as, an abort, a buffer-is-full message), and the like. Also, as an example, the monitor may create conversation-specific statistics, such as, the number of packets exchanged in a conversation, the response times associated with the packets exchanged in a conversation, transaction latency, block transfer size, transfer completion status, aggregate throughput, and the like. It will be appreciated that a specified characteristic could be the presence of an attribute or the lack of an attribute.
In some embodiments, the network diagnostic component 130 may include any features and/or perform any method described in U.S. Patent Application Serial No. 10/769,202, entitled MULTI-PURPOSE NETWORK DIAGNOSTIC MODULES and filed on January 30, 2004, which is hereby incorporated by reference herein in its entirety.
Example Systems
It will be appreciated that the network diagnostic component 130 may be used to implement a variety of systems.
In one embodiment, the network diagnostic component 130 may comprise a printed circuit board. The printed circuit board may include a CPU module. In one embodiment, the network diagnostic component 130 may comprise a blade. The blade may include a printed circuit board, an interface, or any combination thereof.
In one embodiment, the network diagnostic component 130 may comprise a chassis computing system. The chassis computing system may include one or more CPU modules, which may be adapted to interface with one, two, or more blades or other printed circuit boards. For example, a blade may have an interface though which a diagnostic module may send network diagnostic data to a CPU module of the chassis computing system. The chassis computer system may be adapted to receive one or more printed circuit boards or blades.
A CPU module may transmit the network diagnostic data it receives to a local storage device, a remote storage device, or any other suitable system for retrieval and/or further analysis of the diagnostic data. A client software program may retrieve, access, and/or manipulate the diagnostic data for any suitable purpose. Examples of systems and methods for storing and retrieving network diagnostic data include, but are not limited to, those described in United States Patent Application Serial Number 10/307,272, entitled A SYSTEM AND METHOD FOR NETWORK TRAFFIC AND I/O TRANSACTION MONITORING OF A HIGH SPEED COMMUNICATIONS NETWORK and filed November 27, 2002, which is hereby incorporated by reference herein in its entirety.
In one embodiment, the network diagnostic component 130 may comprise an appliance. Depending on the particular configuration, the appliance may include any suitable combination of one or more CPU modules and one or more diagnostic modules. In one embodiment, an appliance may include and/or be in communication with one or more storage devices, which may advantageously be used for storing any suitable diagnostic data, statistics, and the like. In one embodiment, an appliance may include and/or be in communication with one or more client interface modules, which may advantageously be used for displaying information to a user, receiving user input from a client software program, or sending information to a client software program. The appliance may also include and/or be in communication with one or more display devices (such as, a monitor) adapted to display information, one or more user input devices (such as, a keyboard, a mouse, a touch screen, and the like) adapted to receive user input, or both.
It will be appreciated that the network diagnostic component 130 may comprise any of a variety of other suitable network diagnostic components. Example Operating and Computing Environments
The methods and systems described above can be implemented using software, hardware, or both hardware and software. For example, the software may advantageously be configured to reside on an addressable storage medium and be configured to execute on one or more processors. Thus, software, hardware, or both may include, by way of example, any suitable module, such as software components, object-oriented software components, class components and task components, processes, functions, attributes, procedures, subroutines, segments of program code, drivers, firmware, microcode, circuitry, data, databases, data structures, tables, arrays, variables, field programmable gate arrays ("FPGA"), a field programmable logic arrays ("FPLAs"), a programmable logic array ("PLAs"), any programmable logic device, application-specific integrated circuits ("ASICs"), controllers, computers, and firmware to implement those methods and systems described above. The functionality provided for in the software, hardware, or both may be combined into fewer components or further separated into additional components. Additionally, the components may advantageously be implemented to execute on one or more computing devices. As used herein, "computing device" is a broad term and is used in its ordinary meaning and includes, but is not limited to, devices such as, personal computers, desktop computers, laptop computers, palmtop computers, a general purpose computer, a special purpose computer, mobile telephones, personal digital assistants (PDAs), Internet terminals, multi-processor systems, hand-held computing devices, portable computing devices, microprocessor-based consumer electronics, programmable consumer electronics, network PCs, minicomputers, mainframe computers, computing devices that may generate data, computing devices that may have the need for storing data, and the like.
Also, one or more software modules, one or more hardware modules, or both may comprise a means for performing some or all of any of the methods described herein. Further, one or more software modules, one or more hardware modules, or both may comprise a means for implementing any other functionality or features described herein.
Embodiments within the scope of the present invention also include computer- readable media for carrying or having computer-executable instructions or data structures stored thereon. Such computer-readable media can be any available media that can be accessed by a computing device. By way of example, and not limitation, such computer- readable media can comprise any storage device or any other medium which can be used to carry or store desired program code means in the form of computer-executable instructions or data structures and which can be accessed by a computing device.
When information is transferred or provided over a network or another communications connection (either hardwired, wireless, or a combination of hardwired or wireless) to a computer, the computer properly views the connection as a computer- readable medium Thus, any such connection is properly termed a computer-readable medium. Combinations of the above should also be included within the scope of computer-readable media. Computer-executable instructions comprise, for example, instructions and data which cause a computing device to perform a certain function or group of functions. Data structures include, for example, data frames, data packets, or other defined or formatted sets of data having fields that contain information that facilitates the performance of useful methods and operations. Computer-executable instructions and data structures can be stored or transmitted on computer-readable media, including the examples presented above.
The present invention may be embodied in other specific forms without departing from its spirit or essential characteristics. The described embodiments are to be considered in all respects only as illustrative and not restrictive. The scope of the invention is, therefore, indicated by the appended claims rather than by the foregoing description. All changes which come within the meaning and range of equivalency of the claims are to be embraced within their scope.

Claims

CLAIMSWe claim
1. A network diagnostic device placed in-line between first and second nodes in a network comprising: a first module configured to receive a low speed signal pattern from the first node for communication with the second node, wherein the low speed signal pattern includes at least a first signal unit; a second module configured to record the first signal unit in a memory; a third module configured to generate a representation to be recorded in the memory of at least one subsequent signal unit that is the same as the first signal unit; and a fourth module configured to generate a record to be recorded in the memory of the length of time of the first signal unit and the subsequent signal unit.
2. The network diagnostic device in accordance with Claim 1, wherein the low speed signal pattern further includes a second signal unit that is different from the first signal unit, the network diagnostic device further comprising: the second module further configured to record the second signal unit in the memory; the third module further configured to generate a representation to be recorded in the memory of at least one signal unit that is subsequent to the second signal unit and is the same as the second signal component; and the fourth module further configured to generate a record to be recorded in the memory of the length of time of the second signal unit and the subsequent signal unit that is the same as the second signal unit.
3. The network diagnostic device in accordance with Claim 2, wherein the second signal unit is one of Data bursts or DC-Idle.
4. The network diagnostic device in accordance with Claim 2, wherein the second signal unit one of is one of a full-amplitude data burst component or one of a zero amplitude component.
5. The network diagnostic device in accordance with Claim 1, wherein the generated record is displayed on a display device coupled to the network diagnostic device.
6. The network diagnostic device in accordance with Claim 1, wherein the first module is an OOB/speed negotiation state machine.
7. The network diagnostic device in accordance' with Claim 1, wherein the second module is a trace formatting/compression engine.
8. The network diagnostic device in accordance with Claim 1, wherein the third module is a compression counter.
9. The network diagnostic device in accordance with Claim 1, wherein the fourth module is a timestamp generator.
10. The network diagnostic device in accordance with Claim 1, wherein the first and second nodes are SAS/SATA nodes and the network diagnostic component is a SAS/SATA network component.
11. The network diagnostic device in accordance with Claim 1, wherein the network diagnostic device is one of a bit error rate tester, a protocol analyzer, a generator, a jammer, and a monitor.
12. The network diagnostic device in accordance with Claim 1, wherein the first signal unit is one of Data bursts or DC-Idle.
13. The network diagnostic device in accordance with Claim 111, wherein the first signal unit is one of a full-amplitude data burst component or one of a zero amplitude component.
14. A network diagnostic device placed in-line between first and second nodes in a network comprising: a sliding comparator module configured to: receive a network data frame from the first node for communication with the second node, the network data frame comprising one or more data units; use a starring address that specifies where in the data frame to begin the comparison operation; use an ending address that specifies where in the data frame to end the comparison operation; use a match template that specifies a particular condition for comparison; and perform a comparison operation by searching for a data unit in the portion of the data frame specified by the starting and ending addresses that at least partially matches the comparison condition of the match template, wherein the data unit may occur in any location within the specified portion of the data frame.
15. The network diagnostic device in accordance with Claim 14, wherein the sliding comparator module is a state machine.
16. The network diagnostic device in accordance with Claim 14, further comprising: a frame comparator module that is configured to perform a comparison operation on a determined number of data units of the data frame; and a match comparator module that is configured to receive the results of the comparison operation performed by both the frame comparator module and the sliding comparator module and determine whether a successful match has occurred.
17. The network diagnostic device in accordance with Claim 16, wherein the match comparator module is a state machine.
18. The network diagnostic device in accordance with Claim 14, wherein the one or more data units of the data frame are four bytes in size and wherein the sliding comparator is further configured to: compare the four bytes of a single data unit.
19. The network diagnostic device in accordance with Claim 14, wherein the one or more data units of the data frame are four bytes in size and wherein the sliding comparator is further configured to: compare the last three bytes of a first data unit and the first byte of an adjoining second data unit.
20. The network diagnostic device in accordance with Claim 14, wherein the one or more data units of the data frame are four bytes in size and wherein the sliding comparator is further configured to: compare the last two bytes of a first data unit and the first two bytes of an adjoining second data unit.
21. The network diagnostic device in accordance with Claim 14, wherein the one or more data units of the data frame are four bytes in size and wherein the sliding comparator is further configured to: compare the last byte of a first data unit and the first three bytes of an adjoining second data unit.
22. The network diagnostic device in accordance with Claim 14, wherein the first and second nodes are SAS/SATA nodes and the network diagnostic component is a SAS/SATA network component.
23. The network diagnostic device in accordance with Claim 14, wherein the network diagnostic device is one of a bit error rate tester, a protocol analyzer, a generator, a jammer, and a monitor.
24. The network diagnostic device in accordance with Claim 14, wherein the one or more data units of the data frame are a plurality of bytes in size and wherein the sliding comparator is further configured to: compare the plurality of bytes of a single data unit.
25. The network diagnostic device in accordance with Claim 14, wherein the one or more data units of the data frame are a plurality of bytes in size and wherein the sliding comparator is further configured to: compare a first number of bytes of a first data unit and a second number of bytes of an adjoining second data unit.
26. A network diagnostic device placed in-line between first and second nodes in a network comprising: a first module configured to receive a network data frame from the first node for communication with the second node, the network data frame including a plurality of data units interspersed with one or more non-data units that interrupt the proximity and flow of the data units; and wherein the first module is further configured to reorder the network data frame by removing or moving at least some of the non-data units that that are interspersed with the plurality of data units.
27. The network diagnostic device in accordance with Claim 26 wherein the first module is a state machine.
28. The network diagnostic device in accordance with Claim 26, further including a second module configured to interpret the reordered network data frame.
29. The network diagnostic device in accordance with Claim 26 further comprising: a first FIFO buffer configured to have the first module place a predetermined number of the plurality of data units in it; a second FIFO buffer configured to have the first module place the predetermined number of data units and the interspersed one or more non-data units in it; a first counter configured to increment when the first module places a data unit in the first FIFO buffer; wherein the first module is configured to replace with other non-data units the predetermined data units and at least some of the non-data units as they are read from the second FIFO buffer if the counter has not incremented to the predetermined number and the end of the frame has not been detected; wherein the first module is further configured to pass the data units placed in the first FIFO buffer when the counter has incremented to the predetermined number or the end of the frame is detected, wherein at least some of the non-data units are no longer interspersed with the predetermined number of data units; and wherein the first module is further configured to pass the contents of the second FIFO buffer unaltered after passing the data units from the first FIFO buffer.
30. The network diagnostic device in accordance with Claim 29 further comprising: a second counter configured to increment when the first module places the predetermined number of data units and at least some of the non-data units in the second buffer and to begin to decrement when the first counter increments to the predetermined number or the end of the frame is detected; wherein the first module is configured to continue to replace with other non-data units the predetermined data units and at least some of the non-data units read from the second FIFO buffer until the second counter has decremented to a count that matches the number counted by the first counter.
31. The network diagnostic device in accordance with Claim 29, wherein the first FIFO buffer has a depth of 32 dwords and the second FIFO has a depth of 70 dwords.
32. The network diagnostic device in accordance with Claim 26 further comprising: a first FIFO buffer configured to have the first module place the predetermined number of data units in it; a second FIFO buffer configured to have the first module place the predetermined number of data units and the one or more non-data units in it; a third FIFO buffer configured to have the first module place all non- ALIGN/NOTIFY non-data units in it; a first counter configured to increment when the first module places a data unit in the first FIFO buffer; wherein the first module is configured to pass a non-data unit placed in the third FIFO and not pass the predetermined number of data units and non-ALIGN/NOTIFY non-data units in the second FIFO buffer if the counter has not incremented to the predetermined number and the end of the frame has not been detected; wherein the first module is further configured to pass the predetermined number of data units placed in the first FIFO buffer when the counter has incremented to the predetermined number or the end of the frame has been detected, wherein the data units are passed from the first FIFO buffer with fewer or no non-data units interspersed between them; and wherein the first module is further configured to pass any remaining contents of the third FIFO buffer in place of at least some of the non-data units and data units read from the second FIFO buffer and to pass the contents of the second FIFO buffer after the third FIFO buffer is empty.
33. The network diagnostic device in accordance with Claim 32, wherein the first FIFO buffer has a depth of 32 dwords, the second FIFO has a depth of 70 dwords, and the third FIFO has a depth of 70 dwords.
34. The network diagnostic device in accordance with Claim 26, wherein the first and second nodes are SAS/SATA nodes and the network diagnostic component is a SAS/SATA network component.
35. The network diagnostic device in accordance with Claim 26, wherein the network diagnostic device is one of a bit error rate tester, a protocol analyzer, a generator, a jammer, and a monitor.
36. The network diagnostic device in accordance with Claim 26, wherein the network diagnostic device is configured to only reorder the network data frame when a predetermined number of the plurality of data units are not within a desired location in the network data frame.
37. The network diagnostic device in accordance with Claim 26, wherein the network diagnostic device is configured to support at least two network protocols, the network diagnostic device further comprising: a second module configured to enable the first module to reorder the network data frame when operating in the first network protocol, the second network protocol, or both the first and second network protocols and wherein the second module is further configured to disenable the reordering of the network data frame.
PCT/US2007/062162 2006-02-14 2007-02-14 Diagnostic functions in an in-line device WO2007095593A2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
EP07757009A EP1989826A4 (en) 2006-02-14 2007-02-14 Diagnostic functions in an in-line device

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US77351606P 2006-02-14 2006-02-14
US77350706P 2006-02-14 2006-02-14
US77351506P 2006-02-14 2006-02-14
US60/773,515 2006-02-14
US60/773,516 2006-02-14
US60/773,507 2006-02-14
US77919806P 2006-03-03 2006-03-03
US60/779,198 2006-03-03

Publications (2)

Publication Number Publication Date
WO2007095593A2 true WO2007095593A2 (en) 2007-08-23
WO2007095593A3 WO2007095593A3 (en) 2008-07-31

Family

ID=38372249

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2007/062162 WO2007095593A2 (en) 2006-02-14 2007-02-14 Diagnostic functions in an in-line device

Country Status (2)

Country Link
EP (1) EP1989826A4 (en)
WO (1) WO2007095593A2 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8576731B2 (en) 2006-02-14 2013-11-05 Jds Uniphase Corporation Random data compression scheme in a network diagnostic component
US8607145B2 (en) 2006-02-14 2013-12-10 Jds Uniphase Corporation Show OOB and speed negotiation data graphically in a network diagnostic component
US8769152B2 (en) 2006-02-14 2014-07-01 Jds Uniphase Corporation Align/notify compression scheme in a network diagnostic component

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8125906B2 (en) 2006-03-03 2012-02-28 Kiranmai Vedanabhatla Capture RCDT and SNTT SAS speed negotiation decodes in a network diagnostic component

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6205190B1 (en) * 1996-04-29 2001-03-20 Qualcomm Inc. System and method for reducing interference generated by a CDMA communications device
CN100405784C (en) * 1999-06-30 2008-07-23 倾向探测公司 Method and apparatus for monitoring traffic in a network
US6894979B1 (en) * 2001-04-24 2005-05-17 Crossroads Systems, Inc. Network analyzer/sniffer with multiple protocol capabilities
US7024414B2 (en) * 2001-08-06 2006-04-04 Sensage, Inc. Storage of row-column data
CA2479854C (en) * 2002-04-08 2010-08-24 Airmagnet, Inc. Monitoring a local area network
US7711844B2 (en) * 2002-08-15 2010-05-04 Washington University Of St. Louis TCP-splitter: reliable packet monitoring methods and apparatus for high speed networks

Non-Patent Citations (1)

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

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8576731B2 (en) 2006-02-14 2013-11-05 Jds Uniphase Corporation Random data compression scheme in a network diagnostic component
US8607145B2 (en) 2006-02-14 2013-12-10 Jds Uniphase Corporation Show OOB and speed negotiation data graphically in a network diagnostic component
US8769152B2 (en) 2006-02-14 2014-07-01 Jds Uniphase Corporation Align/notify compression scheme in a network diagnostic component

Also Published As

Publication number Publication date
EP1989826A2 (en) 2008-11-12
WO2007095593A3 (en) 2008-07-31
EP1989826A4 (en) 2010-09-15

Similar Documents

Publication Publication Date Title
US7673184B2 (en) Flow control methodology for digital retiming devices
US8321733B2 (en) Optimization of SERDES sampling parameters
US20070189175A1 (en) Capture timing and negotiation data with repeat counts in a networking diagnostic component
US7516046B2 (en) Network diagnostic system with programmable oscillator
US8190722B2 (en) Synchronization of timestamps to compensate for communication latency between devices
US8769152B2 (en) Align/notify compression scheme in a network diagnostic component
US7441154B2 (en) Network analysis tool
US8266271B2 (en) Propagation of signals between devices for triggering capture of network data
US7352706B2 (en) Network analysis scalable analysis tool for multiple protocols
US20060200711A1 (en) Network diagnostic systems and methods for processing network messages
US7827248B2 (en) Discovery and self-organization of topology in multi-chassis systems
US8576731B2 (en) Random data compression scheme in a network diagnostic component
US7630385B2 (en) Multiple domains in a multi-chassis system
US20050060574A1 (en) Network analysis graphical user interface
US20050076113A1 (en) Network analysis sample management process
US20040059807A1 (en) Network analysis topology detection
US20070263649A1 (en) Network diagnostic systems and methods for capturing network messages
US7778188B2 (en) Network diagnostic systems and methods for transmitting and receiving network messages
US7899057B2 (en) Systems for ordering network packets
US8607145B2 (en) Show OOB and speed negotiation data graphically in a network diagnostic component
US7817555B2 (en) Compacting of frames in a network diagnostic device
WO2007095593A2 (en) Diagnostic functions in an in-line device
US20080181129A1 (en) Network diagnostic systems and methods for handling multiple data transmission rates
US20080247416A1 (en) Circuit for tapping a line in a network diagnostic component
US8339955B2 (en) Out-of-band control of communication protocol in an in-line device

Legal Events

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

Ref document number: 6815/DELNP/2008

Country of ref document: IN

NENP Non-entry into the national phase in:

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 2007757009

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 200780010952.X

Country of ref document: CN