内嵌设备中的诊断功能的制作方法

文档序号:7676090阅读:223来源:国知局

专利名称::内嵌设备中的诊断功能的制作方法
技术领域
:本发明涉及内嵌设备中的诊断功能。
背景技术
:由于成本的降低、计算机和网络设备性能的提高、以及通信带宽需求的增加,所以计算机和数据通信网络持续扩张。通信网络一一包括广域网("WAN")、局域网("LAN")、城域网("MAN")和存储区域网络("SAN")—一容许通过在最有效位置的资源共享、语音和数据的传输、以及语音、数据和相关信息的处理,来提高分布式计算机或基站的生产率和效用。此外,由于各种组织已经认识到使用通信网络的经济利益r所以逐渐将网络应用(例如,电子邮件、语音和数据传输、主机访问以及共享和分布式数据库)用作提高用户生产率的手段。随着分布式计算资源数目的扩大,这种增加的需求导致安装网络的数目快速扩张。在对网络的需求扩大时,网络技术已经发展到当前存在许多不同物理配置的这个地步。实例包括千兆以太网("GE")、10GE、光纤分布式数据接口("FDDI")、光纤信道("FC")、同步光纤网("SONET")、串行连接SCSI("SAS")、串行高级技术附件("SATA")和InfiniBand网络。通常,这些网络和其它网络符合多个已建立的标准或协议中的一个,所述标准或协议用以设定在网络资源之间和在网络资源中控制网络访问以及通信的规则。通常,这种网络利用不同的布线系统,具有不同的特性带宽,并通常以不同速度传输数据。具体地,在高速通信系统、方法和设备的领域中,网络带宽已经成为在大多数改进后面的驱动因素。例如,对于网络带宽的不断增加的需求导致这样一种技术的发展,即增加可通过网络上一个信道推进的数据的量。在调制技术、编码算法和纠错方面的改进大大增加了可跨越网络传输数据的速率。例如,几年前,数据可跨越网络传送的最高速率是大约1千兆每秒。在数据跨越各个网络(例如以太网和SONET)的情况下,这个速率己经增加到10千兆每秒或更高。通信网络的大小、速度和复杂度都已经增加,然而这些通信网络可能逐渐出现各种问题,在实践中,例如已经试验出的难以诊断和解决。考虑到对高级别的网络操作可靠性和增加的网络容量的不断需求,这个问题受到特别关注。在网络通信中通常经历的问题可具有多种形式,并且可以各种不同情形的结果出现。可引起网络通信问题的情形、条件和事件的实例包括不必要的小信息帧的传输、信息的无效或出错值错误路由、不适当的网络配置和过多的网络流量等。由于新网络拓扑结构和协议的发展、再配置和引入造成网络持续变化和演变的事实,使得这种问题更加恶化。此外,经常引入和实现新网络互连设备和软件应用。诸如这些的情形突出了对有效、可靠和灵活的诊断机制的需求。
发明内容这里公开的实施例涉及内嵌于(placedin-line)网络中的两个节点之间的网络诊断设备或组件,以压縮网络数据流量(traffic),从而保持可用存储空间。例如,网络诊断组件从与第二节点通信的第一节点接收低速信号图形。可通过接收模块接收低速信号图形。低速信号图形至少包括第一信号分量。网络诊断组件在存储器中记录第一信号分量。网络诊断组件还在存储器中记录与第一信号分量相同的至少一个后继信号分量的代表项(representation)。然后,网络诊断组件可在存储器中记录第一信号分量和后继信号分量的时间长度。这里公开的实施例还涉及内嵌于网络中的两个节点之间的网络诊断设备或组件,以执行对于数据帧的任意指定部分的比较操作。例如,网络诊断组件从与第二节点通信的第一节点接收网络数据流(datastream)。该网络数据流包括一个或多个数据单元。网络诊断组件使用开始地址和结束地址以分别指定比较操作应该在数据帧的何处开始和结束。网络诊断设备还使用匹配模板(matchtemplate)以指定用于比较的特定条件。通过在开始地址和结束地址所指定的数据帧的部分中搜索至少部分匹配于匹配模板的比较条件的数据单元来执行比较操作。数据单元可出现在指定部分中的任意位置。这里公开的实施例还涉及内嵌于网络中的两个节点之间的网络诊断设备或组件,以压縮随机数据信号。例如,在一个实施例中,网络诊断组件从第一节点接收用于与第二节点通信的网络数据帧。网络数据帧可包括多个数据单元,在所述多个数据单元中散置有用以中断数据单元的接近和流动的一个或多个非数据单元。然后,网络诊断单元通过去除或移动散置于多个数据单元中的至少一些非数据单元来重新排序网络数据帧。然后,通过网络诊断组件的其它组件解释所重新排序的网络数据帧。提供该
发明内容,从而以简单形式引入概念选项,所述概念将在以下具体实施方式部分中进一步描述。该
发明内容不是为了识别权利要求所主张的主题的主要技术特征或必要技术特征,也不用作确定权利要求所主张的主题范围的辅助手段。在随后的说明书中将阐述其它特点和优点,并且有些部分将因说明书而变得明显,或者可通过这里公开的实施例的实践中学会。这里公开的实施例的特征和优点可通过在所附权利要求中特定指出的设备和组成的方式实现和获得。这里公开的实施例的这些和其它特点从以下说明书和所附权利要求中将变得完全清楚,或者可通过如下阐述的所公开实施例的实践中学会。为了进一步阐明本发明的上述和其它优点和特点,将通过引用在附图中所示的具体实施例提供对本发明的更具体说明。可以理解,这些附图仅描述本发明的典型实施例,因此不应该认为是其范围的限制。通过使用附图可描述和说明具有其它特性和细节的本发明,其中图1示出包括内嵌于两个节点之间的网络诊断组件的网络框图;图2示出图1的网络诊断组件的具体实施例的详细示图3示出内嵌于两个节点之间的网络诊断组件用以压縮初始化信号从而保持可用存储空间的方法;图4示出各个SAS禾QSATAOOB信号的数据突发(burst)禾QDC空闲(DC-Idle)部分;图5示出图1的网络诊断组件的具体实施例的详细示图6示出内嵌于两个节点之间的网络诊断组件用以在数据帧的任意指定部分上执行比较操作的方法;图7示出图1的网络诊断组件的具体实施例;图8示出根据这里公开的实施例的帧压縮模块;图9示出内嵌于两个节点之间的网络诊断组件用以重新排序或压縮网络流量(traffic)的方法;图IO示出重新排序网络流量的具体方法;以及图11示出重新排序网络流量的其它具体方法。具体实施例方式这里公幵的实施例涉及这样一种网络诊断设备或组件,其内嵌于网络中的两个节点之间,以压縮网络数据流量,从而保持可用的存储空间。例如,网络诊断组件从与第二节点通信的第一节点接收低速信号图形。可通过接收模块接收低速信号图形。低速信号图形包括至少一个第一信号分量。网络诊断组件在存储器中记录第一信号分量。网络诊断组件还在存储器中记录与第一信号分量相同的至少一个后继信号分量的代表项。然后,网络诊断组件可在存储器中记录第一信号分量和后继信号分量的时间长度。这里公开的实施例还涉及这样一种网络诊断设备或组件,其内嵌于网络中的两个节点之间,以执行对于数据帧的任意指定部分的比较操作。例如,网络诊断组件从与第二节点通信的第一节点接收网络数据流。网络数据流包括一个或多个数据单元。网络诊断组件使用开始地址和结束地址,以分别指定比较操作应该在数据帧的何处开始和结束。网络诊断设备还使用匹配模板以指定用于比较的特定条件。然后,通过在开始和结束地址指定的数据帧的部分中搜索至少部分匹配于匹配模板的比较条件的数据单元来执行比较操作。数据单元可出现在指定部分中的任意位置。这里公开的实施例还涉及这样一种网络诊断设备或组件,其内嵌于网络中的两个节点之间,以压縮随机数据信号。例如,在一个实施例中,网络诊断组件从第一节点接收用于与第二节点通信的网络数据帧。网络数据帧可包括多个数据单元,其散置有用以中断数据单元的接近和流动的一个或多个非数据单元(non-dataunits)。然后,网络诊断单元通过去除或移动散置有多个数据单元的至少一些非数据单元来重新排序网络数据帧。然后,通过网络诊断组件的其它组件解释(interpreted)所述重新排序的网络数据帧。这里公开的实施例可以在包括高速数据传输系统和组件的测试的网络系统中得到实践。这里描述的实施例也可用在与测试系统和组件不相关和/或与高速数据传输不相关的其它环境中。首先将描述实例性网络系统。然后,将描述根据这里公开的具体实施例的操作。应注意,这里使用的术语"第一"、"第二"等并没有暗示次序排列,而旨在区别一个元素与另一个元素。实例性网络系统图1是网络系统100的框图。网络系统100可包括经由网络彼此通信的一个或多个节点110、120。如这里使用的"节点"包括但不限于,服务器或主机;客户端或存储设备;交换机(switch);集线器;路由器;SAN结构的全部或一部分;诊断设备;和任意其它设备或系统,或其组合,所述节点可耦合至网络,以及可在网络的至少一部分上接收和/或监控信号或数据,所述节点可在网络的至少一部分上发送和/或生成信号或数据,或发送和/或生成信号和数据这两者。在一个实施例中,可使用信号(例如,电信号、光信号等)在网络的至少一部分上发送和/或接收网络消息。如这里使用的"网络消息"或"网络数据流"包括但不限于,包;数据包(datagram);帧;数据帧;命令帧;有序集合;能够通过计算机网络路由(或另外发送)的任意数据单元等。在一个实施例中,网络消息或数据流可包括用于数据目的、协议管理目的、编码差错(codeviolationerror)等的传输特征。此外,有序集合可包括例如在光纤信道的某些实施例中使用的帧开始("SOF")、帧结束("EOF")、空闲、接收机预备(Receiver—Ready"R—RDY")、环路初始化原语(loopinitializationprimitive"LIP")、仲裁("ARB")、开放("OPEN")和关闭("CLS")。当然,可使用任意其他大小、类型和/或配置的任意有序集合和/或网络消息,其包括但不限于来自任意其它适用协议的有序集合和/或网络消息。节点可使用适当的网络协议进行通信,所述网络协议包括但不限于,串行协议、物理层协议、信道协议、包交换协议、电路交换协议、以太网、快速以太网、千兆以太网、10千兆以太网、光纤信道、光纤信道仲裁环路("FC-AL")、小型计算机系统接口("SCSI")、高性能并行接口("HIPPI")、串行连接SCSI("SAS")、串行ATA("SATA")、串行SCSI架构("SSA")等。在本说明书和权利要求书中定义协议,以至少表示在通信时节点通信的速度以及由节点使用的通信规则。如图l所示,优选地,节点IIO、120是SAS/SATA节点。如这里使用的"SAS/SATA节点"包括兼容SAS的节点、兼容SATA的节点、以及兼容SAS和兼容SATA这两者的节点。然而,可以理解,节点IIO、120不一定是SAS/SATA节点,节点110、120可以是兼容其它类型网络协议的其它类型节点。此外,任意提及的节点是主机或初始节点以及另一个节点是目标节点都仅是用于图示。可以假设,在情形许可的情况下节点IIO、120可以是主机和目标节点这两者。网络系统100可包括网络、网络诊断系统、网络检验系统、或包括网络诊断组件(例如,网络诊断组件130)的类似系统,其可配置为在节点之间传送网络消息。例如,网络诊断组件130可插入在节点110、120之间,从而在节点U0、120之间发送的网络消息可用于网络诊断组件130和/或通过网络诊断组件130路由。更详细地,网络诊断组件130可发送和接收信号或数据。因此,使用信号,网络诊断组件130可从节点接收一个或多个网络消息,向节点发送一个或多个网络消息,或这两者。例如,网络诊断组件130可以接收在节点110、120之间发送的一个或多个网络消息。网络诊断组件130也可以重新发送这些网络消息。具体地,网络诊断组件130可接收从节点IIO发送的网络消息,然后将这些消息重新发送至节点120。此外,网络诊断组件130可接收从节点120发送的网络消息,然后将这些消息重新发送至节点110。如这里使用的"在线"指的是将网络诊断组件配置为具有向其路由的在两个节点之间发送的网络消息,从而网络消息可用于网络诊断组件。在一些实施例中,网络诊断组件可直接在线,或可通过使用开关(tap)等设备间接在线。在其它实施例中,网络诊断组件可具有以任意合理方式向其路由的网络消息。在重新发送这些网络消息之前,网络诊断组件130可修改用以发送网络消息的信号。例如,网络诊断组件130可用数字方式对信号重新定时,可修改信息本身的内容,或这两者。可以理解,网络诊断组件130可以以其它期望的方式修改信号。由于不总是希望网络诊断组件130修改信号,所以网络诊断组件130可选择性地配置为修改(或不修改)用以传输网络消息的信号。网络诊断组件130也可以使用在节点110、120之间发送的网络消息执行多种网络诊断功能。在执行其中某些诊断功能时,网络诊断组件130可被配置为对于网络消息是被动的。如果期望,网络诊断组件130可接收至少一些网络消息,以及可发送一些或所有所接收的信息量(traffic)。在执行其它诊断功能时,网络诊断组件130可被配置为修改一些或所有网络信息量。如图1所示,优选地,网络诊断组件130是SAS/SATA网络诊断组件。如这里使用的"SAS/SATA网络诊断组件"包括兼容SAS的网络诊断组件、兼容SATA的网络诊断组件、以及兼容SAS和兼容SATA这两者的网络诊断组件。然而,可以理解,网络诊断组件130不一定是SAS/SATA网络诊断组件,网络诊断组件130可以是兼容其它类型网络协议的其它类型网络诊断组件。实际上,网络诊断组件130可被配置为使用任意数目的网络协议在任意类型网络和/或网络拓扑结构上执行其功带夕卜(out-ofband)序列禾口速度协商(negotiation)在许多应用中,当节点110和节点120使用低速信号图形(pattern)时,它们可具有多个时段(period)。通常,低速信号图形包括全振幅数据突发(databurst)时段,以及不传输数据的零振幅共态(commonmode)电压时段。由于这些数据图形一般比有正规数据的传输更慢,所以这些数据图形是"低速"的。这种低速信号图形的典型实例是在例如SAS和SATA协议中共有的带外信号(out-of-bandsignal)。当然,本领域普通技术人员可以认识到,存在多个如上所述的具有低速信号图形的其它协议。通常,节点110和120在彼此通信之前经过初始化处理。这种初始化处理使得两个节点对于在彼此通信时所述节点将使用的协议达成一致(例如,速度和/或通信规则)。如上所述,将许多节点配置为使用SAS协议和SATA协议这两者。在这种情况下,通常在对于节点的初始化处理时段必须指定它们将使用SAS协议还是SATA协议进行通信。通过由SAS和SATA协议定义的低速的带外(OOB)信号,将通信规则指定为初始化处理的一部分。OOB信号构成有数据突发的定义时段(definedperiod)跟随其后的DC空闲(共态电压)的定义时段。所述定义时段由SAS和SATA协议指定。数据突发时段对于所有OOB信号而言均相同。然而,DC空闲时段可改变,并且可用于在不同类型的OOB信号之间进行区分。例如,根据1.5千兆比特每秒(Gbps)名义上是666.666微微秒(兆秒)的OOB间隔(OOBI)定义数据突发和DC空闲。在表l中概括了对于各个SAS和SATAOOB信号的数据突发和DC空闲的时段。图4中示出各个SAS和SATAOOB信号的数据突发和DC空闲的图形表<table>tableseeoriginaldocumentpage15</column></row><table>表l在期望使用SAS协议时,节点110可发送指定为COMINIT/COMRESET(COMINIT/COMRESET是电等同信号)和COMSAS的OOB信号至节点120。如表1和图4所示,这些OOB信号具有用以表示信号类型的定义数据突发时段和定义DC空闲时段。在接收到这些OOB信号时,将向节点120通知节点110期望使用SAS协议通信。然后,节点120可适当响应。以类似的方式,如果节点110希望使用SATA协议,则它可发送COMINIT/COMRESETOOB信号和COMWAKEOOB信号至节点120。作为先前讨论的其它OOB信号,COMWAKE信号也具有定义的数据突发时段和定义的DC空闲时段,如表1和图4所示。在接收到这些OOB信号时,将向节点120通知节点110期望使用SATA协议通信。然后,节点120可适当响应。在一些情况下,节点110可能预先不知道节点120可支持哪个协议。在这种情况下,节点110可发送所有OOB信号至节点120。然后,节点120可识别对于在该特定时间配置的协议的OOB信号,并且适当响应节点110。另一方面,通常在OOB序列之后的速度协商序列时段确定通信速度。这包括通常以最低可能速度开始然后持续到更高速度的不同速度协商窗口。例如,SAS/SATA节点通常以1.5Gbps、3Gbps、6Gbps等通信。例如,在SAS协议中,节点H0首先以1.5Gbps发送速度协商信号至节点120。如果节点120识别出1.5Gbps的速度协商信号,则然后节点110将以3Gbps发送速度协商信号。如果节点120识别出3Gbps的速度协商信号,则然后节点IIO将以6Gbps发送速度协商信号。这种过程将持续,直到节点110到达它的速度极限或存在节点120不能识别的速度。在任意情况下,可使用由两个节点支持的最快速度。在SATA协议中,另一方面,作为所示实施例的SATA目标的节点120首先将以其最高速度发送速度协商数据。如果节点110(SATA主机)可以与该速度同步,则使用该速度。如果节点110不能够同步,则节点120将尝试其下一个最低速度,直到可以发现节点110可以同步的速度。例如,节点120首先以6Gbps发送速度协商信号。如果节点110不能够与该速度同步,则节点120可以以3Gbps发送速度协商信号。应注意,尽管与在初始化处理中使用OOB信号相关地描述以上实例,但是可以理解,也可以为了其它目的通过节点IIO和120发送OOB信号。此外,如先前所述,节点110和120也可以使用上述其它类型低速信号图形进行通信。通过重复计数捕获定时(timing)和协商数据然而,通常网络100的用户期望分析信号的数据突发和DC空闲时段的定时。进行该操作以确定适当的信号正被接收。在一些网络系统中,将包括数据突发和DC空闲的每个单独的双字存储在存储器中,然后使用其确定信号的定时。由于大量的双字需要存储器资源的大量百分比,所以考虑到可用的存储器空间,这种方式成本很高。这里描述的实施例考虑到用网络诊断组件130确定数据突发和DC空闲的定时,而不必在存储器中存储每个单独的双字。将参照先前描述的图1,以及图2描述这种实施例,其中图2示出网络诊断组件130的一个特定实施例的细节示图。应注意,图2的实施例仅是可用于实现这里公开的实施例的网络诊断组件130的多个实例中的一个。尽管将使用SAS和SATA协议描述以下实施例,但是这仅是通过实例,而不应该用以限制所附权利要求的范围。也可以通过这里公开的实施例利用其它适当的协议。图2示出网络诊断组件130的实施例,其包括带外(OOB)/速度协商状态机140、轨迹格式化/压縮引擎150、捕获存储器160和时戳(timestamp)发生器170。捕获存储器160在一些实施例中可以是缓冲器,在其它实施例中也可以是任意其它类型适合的非永久性和永久性存储器源(memorysource)。OOB/速度协商状态机140可实现为任意合用的状态机。OOB/速度协商状态机140使用内部双字时钟141取样自电线进来的(incoming)OOB序列180。数据序列180包括与图4和表1先前所述的数据突发和DC空闲对应的数据突发185和DC空闲186。当然,数据序列180也可以对应于这里所述的其它低速信号图形。然后,OOB/速度协商状态机140生成用以表示从OOB序列180检测的DC空闲和数据突发双字的双字对准(aligned)数据145。如图所示,双字对准数据145包括省略号146,其表示任意数目的DC空闲和数据突发双字可包括在OOB序列180中。然后,将双字对准数据145传送到轨迹格式化/压縮引擎150。轨迹格式化/压縮引擎150可实现为软件、硬件、或软件和硬件的任意组合。轨迹格式化/压缩引擎150被配置为通过对DC空闲和数据突发双字计数以及向捕获存储器160提供计数记录来压縮双字对准数据145的DC空闲和数据突发双字,这部分将在稍后说明。轨迹格式化/压縮引擎150还被配置为将时戳插入到捕获存储器中。例如,轨迹格式化/压縮引擎150读取在双字对准数据145中的第一双字或DC空闲,并且向捕获存储器160写入双字或DC空闲。通过在格式化/压縮引擎150中的压縮计数器151对与第一双字相同的任意后继的双字或DC空闲进行计数。在轨迹格式化/压缩引擎150读出与先前双字不同的双字时,生成重新计数记录,并将重新计数记录写入捕获存储器160中。这种重新计数记录的计数值是压縮计数器151的值。在写入重新计数之后,将压縮计数器151重置为0。当轨迹格式化/压縮引擎150读取第一双字或DC空闲时,它使得时戳发生器170(在某些实施例中可以是计数器)开始计数。时戳发生器170持续计数,直到轨迹格式化/压縮引擎150读取到新双字或DC空闲为止。在写入重新计数记录之后,所得到的时戳识别出在捕获存储器160中由轨迹格式化/压縮引擎150插入的从第一双字或DC空闲到新双字或DC空闲的时间长度。时戳允许对在线发生的DC空闲和数据突发进行精确重建。时戳的使用还允许网络诊断组件130的用户确定数据突发和DC空闲时段持续了多久。轨迹格式化/压缩引擎150将新双字或DC空闲也写入捕获存储器中。如上所述,对于相同的任意后继的双字或DC空闲计数,并将其写入存储器160中。如上所述,也写入所述时间长度的时戳。每当由轨迹格式化/压縮引擎150读取与先前双字或DC空闲不同的双字或DC空闲时,该处理都会继续。现在将描述特定实例。应注意,在实例中使用的双字或DC空闲的数目仅用于示例,不应该用于限制所附权利要求的范围。参照图2,双字对准数据145包括5个DC空闲,标记为DCI,随后是6个数据突发双字,标记为突发。轨迹格式化/压缩引擎150读取第一DCI,并将其写入捕获存储器160,并标记为161。由于后继有四个DCI,所以轨迹格式化/压縮引擎150在捕获存储器中记录来自压縮计数器151的4个重复计数,并标记为162。通过时戳发生器170生成记录DCI的时间长度的时戳163,并且也将其写入捕获存储器中。在DCI之后是6个数据突发双字。轨迹格式化/压縮引擎150提取第一突发双字,并将其写入捕获存储器160,并标记为164。由于后继有5个突发双字,所以轨迹格式化/压縮引擎150在捕获存储器中记录5个重复计数,并标记为165。也通过时戳发生器170生成时戳166。应注意,捕获存储器160也包括省略号(ellipses)167的部分,其表示必要时可根据在双字对准数据145中DC空闲和数据突发双字的数目而记录任意数目的附加OOB记录。然后,通过上述方法在捕获存储器160中存储的数据突发双字和/或DC空闲的数据可使用连接的显示设备(未示出)显示,或通过网络诊断组件130的用户访问。这允许用户检验OOB信号的定时是否与预期相同。如果信号的定时不是预期的,则可采取校正行为。例如,先前描述的COMSASOOB信号通常包含DC空闲,随后是数据突发,它们通常是ALIGN原语(primitives)。用于COMSAS的DC空闲时间大约是960纳秒(ns),数据突发时间是120ns。在3Gbps速度下,双字间隔期(granularity)通常是13.3ns。因此,对于DC空闲时间的计数是72个双字。对于对准数据突发的计数是9个双字。由此,诊断组件130能够检测到所接收的信号180是COMSAS信号。通过以下表2所示的内容显示。<table>tableseeoriginaldocumentpage19</column></row><table><table>tableseeoriginaldocumentpage20</column></row><table>通过重复计数捕获定时和协商数据的实例性方法现在参照图3,其示出用于内嵌诊断组件的方法300的流程图,该方法用于压縮初始化信号,以保持可用的存储空间。将结合图1和图2的网络系统描述方法300,尽管不强求,但是可以理解,方法300可以在各种诊断网络系统中实践。方法300包括从与第二节点通信的第一节点接收含有至少第一信号分量的低速信号图形的步骤,如步骤302。例如,网络诊断组件130,具体为OOB/速度协商状态机140,可以从节点110或节点120接收OOB数据序列180,所述节点110或节点120可以是SAS/SATA设备。如上所述,OOB数据序列180是低速信号图形的一个实例,尽管也可以接收这里所述的其它低速信号图形。OOB数据序列180可包括DC空闲和数据突发双字这两者。第一信号分量可以是DC空闲或数据突发双字。方法300还包括在存储器中记录第一信号分量的步骤,如步骤304。例如,轨迹格式化/压縮引擎150可读取在双字对准数据145中的第一DC空闲或数据突发双字,并在捕获存储器160中记录该值并作为记录161。如图所示,记录161包括DC空闲,尽管数据突发双字或其它信号分量也可以记录为记录161。方法300还包括在存储器中记录与第一信号分量相同的至少一个后继信号分量的代表项的记录,如步骤306。例如,网络诊断组件130(可以是SAS/SATA网络组件)可以在捕获存储器160中记录与第一信号分量相同的后继信号分量的代表项以作为记录162。在一些实施例中,通过轨迹格式化/压縮引擎150中的压縮计数器151执行该处理,所述压縮计数器151用于计数与步骤304中记录的第一数据突发双字或DC空闲相同的所有数据突发双字或DC空闲。然后,可对计数记录进行记录,作为记录162。其有利之处在于,对与第一信号分量相同的后继信号分量的代表项的记录节省了有价值的捕获存储器空间,以用于其它诊断组件,因此潜在地降低成本和递加效率。此外,方法300包括在存储器中记录第一信号分量和后继信号分量的时间长度的步骤,如步骤308。例如,网络诊断组件130可在记录163中记录信号分量的时间长度。在一些实施例中,时戳发生器170产生时戳,所述时戳通过轨迹格式化/压縮引擎150添加到记录存储器160,作为记录163。在一些实施例中,可通过显示设备显示捕获存储器160的记录,以通知用户比较结果。然后,如果必要,用户可采取校正行为。在其它实施例中,诊断组件130可以首先测量和记录上述第一信号分量。然后,诊断组件可测量并记录第二信号分量以及与先前所述的第二信号分量相同的后继的信号分量。实例性帧比较器现在参照图5,其示出网络IOO的附加实施例。应注意,图5的具体实施例仅用于图示,不限制所附权利要求的范围。如本实施例所示,网络诊断组件130包括帧比较器模块540,帧比较器模块540可以硬件、软件和这两者任意组合来实现。在一些实施例中,以状态机来实现帧比较器模块540。在操作中,帧比较器540允许用户定义用于网络诊断组件130的掩码模板570和匹配模板580,以用来寻找用于特定目的(例如触发)的特定帧类型。一般地,基于双字建立这些模板。通常,双字包括32比特,而数据帧包括整数个双字。用户可选择应该在网络数据帧115(以下,简称为帧115)比较器模块540中寻找多少双字的深度以用于匹配。搜索的深度确定比较器模块540的结束地址。例如,如果期望比较在帧115中第50个双字的深度,则将结束地址设置为第50个双字。然后,用户对掩码(mask)模板570和匹配模板580分别提供对于从1至50的每个双字的掩码值和匹配值。每个掩码值和每个匹配值由32比特构成,以允许比较对应双字的每个单独比特。对于每个双字,通过帧比较器模块540将掩码模板570中的掩码值与对应于掩码值而进来的(incoming)双字进行AND操作。例如,将对于双字1的掩码值与由帧比较器模块540接收的实际双字1进行AND操作。然后,将对于所有指定双字的AND操作的结果与匹配模板580中的对应匹配值相比较。如果在比较器540到达指定的结束地址(例如,在当前实例中的50个双字)之前的任意时刻找到不匹配,则终止比较,并认为整个帧115不匹配。当帧比较器模块540的使用满足许多应用时,通常期望进行更精确的搜索。例如,可能存在用户期望在进来的帧的数据有效载荷(payload)中搜索的特定数据值。由于在帧数据有效载荷中如何封装数据会有所不同,用户通常不能够确定特定值是否对准在有效载荷中的偶数双字边缘上,或其在有效载荷中的可能位置。此外,帧比较器540仅允许对于帧中的每个指定双字位置定义的匹配值和掩码值,但是不允许搜索可能在帧中任意位置找到的指定值。这里公开的实施例允许滑动比较器实现为允许进行更精确的搜索。实例性滑动比较器模块再参照图5,其示出网络诊断组件130还包括滑动比较器模块550和匹配比较器模块560。可以硬件、软件或硬件和软件的任意组合来实现每个模块。在一些实施例中,以状态机来实现这些比较器模块。滑动比较器模块550允许用户定义在何处开始搜索,在何处结束搜索,以及不管数据帧115的位置而匹配的特定双字。这使得用户在进行期望双字搜索时可绕过数据帧115的报头(header)或其它数据。在操作中,由用户定义开始地址556和结束地址557。将这些值表示为在帧115中的多个双字。因此,可将开始地址556设置为任意期望的双字值。例如,如果帧115的报头部分是20个双字深度,并且帧115的数据部分是100个双字深度,则用户可指定开始地址556是第21个双字,以保证跳过报头部分。同样,用户可指定开始地址556是第100个双字的深度,以保证在帧115的数据有效载荷部分中第80个双字深度开始搜索。另一方面,结束地址557告诉滑动比较器在结束所述比较操作之前在帧115中还须行进多深的深度。当然,在一些实施例中,可简单地将开始地址556指定为帧115的开始。此外,在其它实施例中,可以在诊断组件130的操作之前指定开始地址556和结束地址557。滑动比较器模块550允许用户定义掩码模板590和匹配模板595,以用于比较。用户提供用于期望的双字的掩码值和指定比较条件或操作的对应匹配模块。与比较器540不同,滑动比较器模块550允许用户对于在所定义的开始地址556和结束地址557之间的数据帧115部分中的任意期望的双字(或双字的某些部分)来定义掩码模版590和匹配模板595。每个掩码值和每个匹配模板比较条件可包括32个比特,以允许比较对应双字的每个单独比特。当然,比较条件或操作不必是简单的单一值,尽管在一些实施例中,匹配模板595可指定单一值作为比较条件。在其它实施例中,匹配模板595可指定比较条件是操作等。例如,比较条件可指定滑动比较器模块550从要读取的当前双字减去5,其结果就是期望的比较条件。因此,将匹配模板595配置为指定任意合理的比较条件。滑动比较器在数据帧115中搜索,直到其到达结束地址557,或者所述数据帧因为帧115小于结束地址557而结束。每当匹配模板的比较条件等于与掩码值AND操作的进来的双字(或其部分)时,则认为其匹配。然后,如果需要,将该结果通知到网络诊断组件130的其它组件。在一些实施例中,滑动比较器模块550被配置为在字节边缘进行比较或工作。如先前所述,数据帧通常与双字,或4字节边缘对准。因此,可能存在有四个4字节宽度部分,滑动比较器可在其上进行比较或工作。例如,滑动比较器550可以在4个字节(作为一个双字)的第一部分进行比较或工作。滑动比较器550也可以在帧115中包括一个双字的最后3个字节与下一个双字的第1个字节组合的第二部分进行比较或工作。滑动比较器550也可以在包括在帧115中一个双字的最后2个字节和下一个双字的前2个字节的第三部分进行工作或比较。最后,滑动比较器550也可以在包括在帧115中一个双字的最后1个字节和下一个双字的前3个字节的第四部分进行比较或工作。在这种实施例中,如果在比较完所有4个部分时没有到达结束地址,则该处理再次开始。因此,在字节边缘工作的滑动比较器的配置允许用户指定2个或更多个双字的部分的比较,因此提供更加灵活的搜索。当然,滑动比较器模块550可被配置为根据先前所述的帧数据边缘对准和比较部分宽度的任意变化而运行。例如,滑动比较器模块550可被配置为在以下的帧上运行,所述帧不与双字(或4个字节)的边缘对准,但与多于或少于4个字节边缘对准。滑动比较器模块550可被配置为多于或少于4个字节(即前述大小)宽度的数据部分上进行比较或工作。例如,滑动比较器模块550可被配置为在同时可跨越2或3个帧数据双字的2个双字(或8个字节)宽度的数据部分上进行比较或工作。滑动比较器550也可以在帧115中包括一个双字的第一数目的字节与下一个双字的第二数目的字节所组合的数据部分上进行比较或工作。在其它实施例中,滑动比较器可被配置为读取在数据帧115中的原语双字,而不影响比较操作。在一些协议(例如SAS和SATA)中,数据帧通常包括散置有例如ALIGN/NOTIFY和HOLD/HOLDA的原语双字的数据双字。在这种情况下,通常滑动比较器会忽略原语,并且仅比较数据双字。例如,假设数据帧115依次包括数据双字1、数据双字2、原语双字、原语双字、数据双字3。在这种情况下,当滑动比较器模块550到达数据双字2时,其被配置为直接滑动到数据双字3,并忽略中间的原语双字。通常,通过将数据双字2的值保持锁存(latch)在寄存器565中来执行该处理,所述寄存器565可包括在滑动比较器模块550中或包含的网络诊断组件130的其它部分中。只要需要,寄存器的使用允许数据双字2对于滑动比较器模块550可用。再参照图5,其示出在一些实施例中实现的匹配比较器模块560。在这种实施例中,可向匹配比较器模块560提供帧比较器模块540的结果和滑动比较器模块550的结果。匹配比较器模块560等待以观察帧比较器模块540是否在每个双字上匹配直至其结束地址为止,以及滑动比较器模块550是否在其开始地址556和结束地址557之间的某处找到匹配。如果两个匹配都被找到,则匹配比较器模块560确定数据帧115是匹配的。然后,可通过网络诊断组件130的各个组件在数据帧115上执行其它操作。滑动比较的实例性方法现在参照图6,其示出用于内嵌诊断组件的方法600的流程图,以在数据帧的任意指定部分上执行比较操作。尽管不强求,还是会以图1和图5的网络系统相关的方式来描述方法600。可以理解,可以在多种诊断网络系统中实践方法600。在一些实施例中,可通过网络诊断组件的硬件组件和模块实时地动态(onthefly)执行方法600。方法600包括从与第二节点通信的第一节点接收网络数据帧的步骤,所述网络数据帧包括一个或多个数据单元,如步骤602。例如,网络诊断组件130,尤其是滑动比较器模块550,可以从节点UO或节点120接收网络数据流115,所述节点110或节点120可以是SAS/SATA设备。网络数据流115可包括一个或多个数据单元,例如数据双字,并且可包括一个或多个非数据单元,例如原语双字。方法600还包括使用开始地址以指定在数据帧的何处开始比较操作的步骤,如步骤604,以及使用结束地址以指定在数据帧的何处结束比较操作的步骤,如步骤606。例如,,滑动比较器模块550可使用开始地址556以表示在网络数据流115中的何处开始比较操作。以类似方式,滑动比较器模块550可使用结束地址557以表示在网络数据流115中的何处结束比较操作。其有利之处在于,定义开始地址和结束地址的能力允许对位于开始和结束地址之间的数据帧的任意位置的数据双字(或部分数据双字)的比较,而不必比较不在指定部分中的数据双字。方法600还包括使用匹配模板以指定比较的特定条件的步骤,如步骤608。例如,滑动比较器550可使用匹配模板595。如上所述,并且结合掩码模板590,匹配模板595允许用户定义用于比较的特定比较条件。此外,方法600包括通过在开始地址和结束地址指定的数据帧的部分中搜索与匹配模板的比较条件至少部分匹配的数据单元,来执行比较操作的步骤,其中数据分量(component)可出现在数据帧的指定部分中的任意位置,如步骤610。例如,滑动比较器模块550可通过搜索与匹配模板的比较条件匹配的在数据帧的指定部分中包含的数据双字(或部分数据双字)来执行比较操作。如上所述,被比较的双字可位于数据帧的指定部分中的任意位置。网络诊断工具中的帧比较如先前所述,在一些实施例中,网络诊断组件130可包括帧比较器模块或用以解释所接收网络消息或数据帧的其它模块。所述解释的一个实例是检测数据帧是否包括一个或多个预定数据双字。例如,帧比较器经常被设计为能够对一个帧中的前32个数据双字进行检测。换句话说,帧比较器可检测帧是否包含多达32个预定数据双字。当然,如果情况许可,可通过用户配置帧比较器,以检测多于或少于32个的任意数目的数据双字。通常,帧比较器扫描进来的帧(即,它解释数据帧),以确定数据帧是否包含预定数据双字。如果发现了所述比较,则网络诊断组件130可在数据帧上执行其它操作。例如,假设由用户预定网络诊断组件130解释特定数据帧的前5个数据双字。在这种情况下,在数据帧被接收时,网络诊断组件130的帧比较器通常期望数据帧的前5个双字是数据双字。帧比较器将锁定前5个双字,以执行其解释操作。在保证前5个双字始终是数据双字的协议中,通常会按计划成功完成解释操作。然而,在许多协议(例如SAS和SATA)中,在节点110、120之间发送的网络数据帧可包括至少部分数据双字和通常散置于所述数据双字之间的协议指定原语双字(也简称为"原语"),其中散置的方式中断在数据帧中数据双字的接近(proximity)和流动(flow)。例如,在SAS和SATA中,由于流动控制机制,大量原语双字可包括在数据帧中。此外,由于速率匹配,其它原语双字可包括在数据帧中。通过这种协议,不能保证数据双字在数据帧中的给定位置中。例如,在第四个数据双字之前,数据帧可具有三个数据双字,后继是20个原语双字。在这种情况下,尝试解释前五个数据双字的帧比较器可在第四个和第五个双字的位置找到原语双字,而并非是期望的数据双字。因此,通常,解释操作失、即使将网络诊断组件130的帧比较器设计为允许对数据帧中的数据双字流中进行一些中断,但是由于在网络诊断设备中的存储约束,仍旧存在有中断究竟为多大的限制。例如,假设将网络诊断组件130的帧比较器配置为对自数据帧的开始处(SOF)的前70个双字内直到第32个数据双字进行解释。如果具有足够多原语双字的数据帧到达网络诊断组件130,则使得帧比较器看不到自帧开始处的前70个双字中的第32个数据双字,则帧比较就会失败。这种70个双字的限制仅是实例,而在以下情形,例如在帧比较的结果已知之后,如果需要网络诊断组件130在帧的开始处执行一些操作的话,这种限制会被强制执行。很明显,对于内嵌设备,例如在节点110和120之间输送通信流(traffic)的网络诊断组件130,在由于存储限制而必须将这些双字从一个节点转换至另一个节点之前,其存在有可保持在网络诊断组件130中的双字的有限限制。此外,这个数目的双字将影响经过网络诊断组件130的通信量的延缓(latency),并且基于性能理由而通常期望该延缓保持在最小值。因此,这里描述的实施例涉及压縮数据帧的系统和方法。该压縮处理使得网络诊断组件130重新排序数据帧,以移动或去除在数据帧中中断了至少一些数据双字的接近(proximity)的任意原语双字。这保证了在数据帧中的数据双字位于可通过网络诊断组件130的组件进行解释的位置。尽管将使用SAS/SATA协议描述以下实施例,但是这仅是通过实例的方式,而不应该用以限定所附权利要求的范围。这里公开的实施例也可以采用其它适合的协议。下面将参照已经描述的图1和以下将描述的图7说明这里公开的实施例。实例性网络诊断组件图7示出网络100的具体实施例。应注意,图7的实施例仅是用于实现这里公开的实施例的网络诊断组件130的多个实例中的一个,不应该用以限制所附权利要求的范围。如图所示,网络诊断组件130包括帧压縮模块740和比较模块750。可以用软件、硬件或这两者的任意组合来实现帧压縮模块740。帧压縮模块740被配置为包括数据双字的数据流或帧,其中所述数据双字中散置有用以中断至少一些数据双字的接近和流动的原语双字。然后,帧压縮模块740在数据帧上执行操作,以重新排序数据帧。所述重新排序处理通过移动或去除任意散置的原语双字来安排数据双字的至少一部分彼此紧邻。然后,向比较模块750提供压縮的数据流。也可以用软件、硬件或这两者的任意组合来实现比较模块750,确切的实施方式对于这里公开的实施例而言并不重要。如果情况许可,将比较模块750配置为对从帧压縮模块740接收的数据帧进行解释,并且在所述数据帧上进行比较操作。如上所述,可将比较模块750设计为对处在自数据帧的开始处的双字总数内的预定数目的数据双字进行比较。例如,在一个实施例中,将比较模块750配置为比较自数据帧的开始处的70个双字内直到第32个数据双字。应注意,数据双字的预定数目和总的双字可以是由网络诊断组件130的用户所确定的任意合理值。因此,对于比较和压縮目的的指定数目数据双字和总的双字的任意参考仅是用于例证。实例性帧压缩模块现在参照图8,其示出帧压縮模块的具体实施例800。尽管不强求,帧压縮模块800还是可对应于图7的帧压縮模块740。应注意,关于图8所述的具体组件、组件大小等仅用于例证,不应该用以限制这里公开的实施例的范围。帧压縮模块800包括检测模块801。可以软件、硬件或这两者的任意组合来实现检测模块801,该检测模块801被配置为从节点(例如节点110、120)接收数据帧805,以及通过将部分数据帧805放置在一个或多个FIFO(稍后将更详细说明)中来重新对准数据帧805。检测模块801还被配置为控制来自FIFO的双字流(flow)。在一些实施例中,检测模块801是状态机(statemachine)。帧压縮模块800还包括帧FIFO缓冲器810和穿过型(pass-through)FIFO缓冲器820。在一个实施例中,将帧FIFO810配置为具有32个双字的深度或大小,将穿过型FIFO820配置为具有70个双字的深度或大小。应注意,这些FIFO深度专用于将比较模块750设计为解释自SAS或SATA数据帧的开始处的70个双字内的第32个数据双字的实施例。选择FIFO深度,以保证当帧经过帧比较模块800时,比较模块750能够解释该帧。对于该具体实例,在每秒3千兆比特运行SAS或SATA协议的情况下,选择70个双字,以允许在帧的前32个数据双字之间可以散置ALIGN和NOTIFY原语,因为这些原语在需要进一步对准压縮的数据帧中不会被移除。在其它实施例中,帧FIFO810和穿过型FIFO820可具有其它深度。因此,这里公开的实施例假设各个深度的FIFO都是可操作性和设计参数所许可的。应注意,在没有应用SAS或SATA协议的实施例中,在网络流量(traffic)中(例如可当作ALIGN/NOTIFY)双字可以存在或可以不存在。在一些实施例中,帧压縮模块800可包括原语FIFO缓冲器830。原语FIFO830可以是任意所需深度。在本实例中,原语FIFO830被配置为具有70个双字的深度,稍后将更详细说明。在其它实施例中,如果必要,原语FIFO830可具有其它深度。帧压縮器800还包括计数器840和计数器850。将计数器840和850分别配置为对位于帧FIFO810和位于穿过型FIFO820中的双字进行计数。可以任意适当的计数器来实现所述计数器。在SATA中的帧压縮现在将参照图8说明根据一个实施例的用于SATA协议的帧压縮模块800的具体操作。由检测模块801接收包括数据双字的数据帧805,所述数据双字散置有中断数据双字的接近和流动的原语双字。检测模块801首先寻找SOF(帧开始处)原语双字,然后确定每个后继的双字是数据双字还是原语双字。当通过检测模块801检测出SOF(帧开始)原语双字时,将其放置在帧FIFO810中,并且启动计数器840。同时,将SOF原语双字放置在穿过型FIFO820中,并且启动计数器850。SOF是原语双字,但是由于在比较模块750中需要SOF与其它31个数据双字用于比较,所以SOF可看作用于这里公开的实施例的数据双字。如先前所述,在一些实施例中,比较模块750比较在数据帧805的前70个双字中直到第32个数据双字。在同时还将SOF双字放置在帧FIFO810和穿过型FIFO820中之后,通过检测模块801检测每个数据双字。在将数据双字放置在每个FIFO中时,计数器840和850执行加l操作。此外,由检测模块801检测的每个原语双字仅放置在穿过型FIFO820中。其中一些原语双字使得计数器850执行加1操作。计数器850保持在任意给定时刻在FIFO820中非ALIGN/NOTIFY双字的总数目。然而,在SAS和SATA协议中具有专用速率匹配和时钟重新定时功能的任意ALIGN/NOTIFY原语双字不被计数。在一些实施例中,ALIGN/NOTIFY原语双字不被帧压縮模块140改变,以保留速率匹配和时钟重新定时功能。所述处理在检测模块801检测出数据双字和原语双字这两者时继续。在该实施例中,在70个双字之后,当穿过型FIFO820具有70个双字的深度时,SOF双字将到达穿过型FIFO820的输出。此时,检测模块801将检査计数器840已经递加了多少次。如果己经检测到帧的结束处,则意味着帧小于32个数据双字,或者,如果计数器840递加到32个计数,其表示在FIFO810和820两者中都存在32个数据双字,则允许穿过型FIFO820的内容传到比较模块750,而不存在由数据帧815表示的任意重新排序。此外,允许在这个时刻之后接收的所有双字经过,直到帧完成,并且在检测到另一个SOF双字时处理再次开始。这是因为数据帧815将满足自帧的开始处的70个双字内结束的设计需求、或自帧的开始处的70个双字中具有32个数据双字的设计需求。如上所述,这将使得比较模块750适当解释帧815。将帧FIFO810清空,并且重置计数器。此外,所有流量(traffic)继续流过穿过型FIFO820,包括在帧之间的流量,以保持流量能按原样流动(flow)。另一方面,如果检测模块801发现计数器840没有递加到32,其表示在帧的前70个双字中不存在32个数据双字,则数据帧不会从FIFO820中按原样传送。相反,每当非ALIGN/NOTIFY双字到达穿过型FIFO820的输出时,包括SOF双字,该双字被SATA一X—RDY原语双字代替,然后将其传送至比较模块750。SATA一X一RDY原语双字被比较模块750忽略,比较模块750在开始数据帧的解释之前寻找SOF双字。到达穿过型FIFO820的底部的ALIGN/NOTIFY原语双字按原样经过,以保持如上所述的速率匹配和时钟重新定时。例如,假设数据帧包括SOF原语双字,后继依次是数据双字,ALIGN/NOTIFY原语双字,数据双字和非ALIGN/NOTIFY原语双字。应注意,在非ALIGN/NOTIFY原语双字之后,也可以存在任意数目的附加双字。此外,假设在SOF双字到达FIFO820的输出时,计数器840没有递加到32。在这种情况下,检测模块801将使得SATA—X一RDY原语双字代替SOF双字并被传送。在下一个时间段,将发送SATA一X一RDY原语双字以代替第一数据双字。然而,如上所述,ALIGN/NOTIFY原语被传送(pass)。两个SATA一X—RDY原语双字也被传送以代替第二数据双字和非ALIGN/NOTIFY原语双字。一旦检测模块801检测到帧的结束处或确定计数器840递加到32(其表示在FIFO810中存在32个数据双字),则随后仍旧对于每个非ALIGN/NOTIFY双字发送SATA—X—RDY原语双字。在这种情形下,计数器850不再递加,而是在检测到帧的结束处或计数器840到达32之后,在每次发送SATA一X一RDY时进行递减,这种情况一直延续到计数器850递减到计数器840的当前值。只要不是在计数器840到达32之前检测到帧的结束处,该值就是32。所述处理用以保证在如上所述从FIFO810发送数据双字并将被解释之后,从FIFO820发送的第一双字是紧接在原始帧805中的帧或数据双字32的结束之后到来的任何双字。换句话说,计数器850的使用会确保在帧的结束处或第32个数据双字之间没有间隙,以及确保在从帧FIFO810发送内容时跟随其后的内容。此外,当检测到帧的结束处或计数器840到达32时,数据双字不再放置在帧FIFO810中,而所有双字仍将放置在穿过型FIFO820中,且计数器840不再递加。一旦计数器850如上所述而进行递减,则将帧FIFO810的内容作为帧815发送至比较模块750。这种发送通过每次在穿过型FIFO820的输出中检测到非ALIGN/NOTIFY双字时从帧FIFO810向外发送一个数据双字来执行。如上所述,在穿过型FIFO820的底部检测到的所有ALIGN/NOTIFY原语仍然会在这之前被传送并被解释。在传送帧FIFO810的内容之后,还将此刻之后接收到的穿过型FIFO820的内容和任意新双字作为数据帧815的一部分传送到比较模块750,并重置计数器。该处理保证自帧的开始处的70个双字内由比较模块750接收到所需的32个数据双字,或者在帧小于32个双字的情况下接收到变少了的双字,因此使得比较模块750能适当地解释数据帧。然后,每当检测模块801检测到新SOF双字时,执行帧压縮操作。在SAS中的帧压缩现在将参照图8来说明根据一个实施例的用于SAS协议的帧压缩模块800的具体操作。该操作类似于跟为SATA协议而描述的实施例相关的所述操作。不过,本实施例利用原语FIFO830以及在SATA实施例中用到的两个FIFO。正如在SATA操作中一样,由检测模块801接收包括数据双字的帧805,其中所述数据双字散置有中断所述数据双字的接近和流动的原语双字。检测模块801首先寻找SOF原语双字(帧的开始处),然后确定每个后继的双字是数据双字还是原语双字。当检测模块801检测出SOF原语双字时,将其放置在帧FIFO810中,并且启动计数器840。同时,将SOF原语双字放置在穿过型FIFO820中。应注意,在SAS操作中,不使用计数器850,稍后会对此进行更详细描述。在SOF双字之后由检测模块801检测的每个数据双字也同时放置在帧FIFO810和穿过型FIFO820中。在将数据双字放置在每个FIFO中时,计数器840执行加l操作。此外,将检测模块801检测的每个非ALIGN/NOTIFY原语双字同时放置在穿过型FIFO820和原语FIFO830中。非ALIGN/NOTIFY原语可包括重要信息,当在SAS协议下操作时,所述重要信息应该在节点110、120之间最终(ultimately)发送,因此有必要在FIFO830中将它们收集起来。ALIGN/NOTIFY原语仅放置在穿过型FIFO820中。正如在SATA操作中一样,ALIGN/NOTIFY原语具有速率匹配和时钟重新定时功能,并且在实例性实施例中不应该被帧压縮模块140改变。在由检测模块801检测出数据双字、非ALIGN/NOTIFY原语双字、和ALIGN/NOTIFY原语双字时,所述处理继续进行。在70个双字之后,SOF双字将到达穿过型FIFO820的输出。此时,检测模块801将检查计数器840递加了多少次。如果已经检测到帧的结束处,则意味着所述帧小于32个数据双字,或者,如果计数器840递加到32个计数,其表示在FIFO810和820两者中存在32个数据双字,然后允许穿过型FIFO820的内容被传送到比较模块750,而不进行由数据帧815表示的任意修改。此外,允许在这个时刻之后接收的所有双字被传送,直到所述数据帧完成并且处理再次开始。这是因为数据帧815将满足或者自帧的开始处的70个双字内结束、或者自帧的开始处的70个双字内具有32个数据双字的需求。如上所述,这将使得比较模块750能解释帧815。清空帧FIFO810和原语FIFO830,并且重置计数器。另一方面,如果检测模块801发现计数器840没有递加到32,其表示在帧的前70个双字中不存在32个数据双字,则不自动传送穿过型FIFO820的内容。相反,每当非ALIGN/NOTIFY双字到达穿过型FIFO820的输出时,传送来自原语FIFO830的原语双字被。这就保证了所有非ALIGN/NOTIFY原语的传送。正如在SATA的情况一样,在ALIGN/NOTIFY原语到达穿过型FIFO820的底部时被传送。如先前所述,比较模块750看到SOF双字之前不会开始其操作。一旦检测模块801检测到帧的结束处或确定计数器840递加到32(其表示在帧FIF0810中存在32个数据双字),则将帧FIFO810的内容作为数据帧815发送至比较模块750,而不再将双字放置在帧FIFO810或原语FIFO830中,并清除记数器840。每当在穿过型FIFO820的输出中检测到非ALIGN/NOTIFY双字时,通过从帧FIFO810向外发送一个字(word)来执行该处理。在穿过型FIFO820的底部检测到的所有ALIGN/NOTIFY原语仍然被传送。一旦帧FIFO810清空,则原语FIFO830也清空剩余的任何非ALIGN/NOTIFY原语双字,以保证所有非ALIGN/NOTIFY原语作为数据帧815的一部分或在数据帧815之后也被传送。每当在FIFO820的输出中检测到非ALIGN/NOTIFY双字时,通过从原语FIFO830向外发送一个字来执行该处理。在穿过型FIFO820的底部检测到的所有ALIGN/NOTIFY原语仍然被传送。并且还将在此时之后接收的穿过型FIFO820的所有较新的内容和任何新的双字作为数据帧815的一部分或在数据帧815之后传送至比较模块750,并重置计数器。该处理保证自帧的开始处的70个双字内由比较模块750接收所需的32个数据双字,或者如果所述帧小于32个双字,由比较模块750接收变少了的双字,因此而允许比较模块750能适当地解释数据帧。然后,每当检测模块801检测到新SOF时,可执行帧压縮操作。帧压縮的实例性方法现在参照图9,其示出用于在线诊断组件的重新排序或压缩网络流量(traffic)的方法900的流程图。尽管不强求,对方法900描述还是会联系图1、图7和图8的网络系统而进行。可以理解,可以在多种诊断网络系统中实践方法900。方法900包括从与第二节点通信的第一节点接收网络数据帧的步骤,所述网络数据帧包括多个数据单元,所述多个数据单元中散置有中断数据单元的接近和流动的一个或多个非数据单元,如步骤902。例如,网络诊断组件130,具体为检测模块801,可接收帧805。如上所述,帧805(其可以符合SAS或SATA协议)可包括数据双字(数据单元)和一个或多个原语双字(非数据单元)。帧805的原语双字可散置在数据双字中,从而中断数据双字的接近和流动。数据双字的这种中断可能会使得比较模块750不能够适当解释帧805。方法900还包括通过去除或移动散置在多个数据单元中的至少一些非数据单元来重新排序数据帧的步骤,如步骤904。例如,检测模块801(在一些实施例中可以是状态机)可将帧805重新排序在可由比较模块750解释的帧815中。这种重新排序使得预定数目的数据双字彼此邻近,除了可能无法移动或去除的原语双字(例如ALIGN/NOTIFY)之外,在它们之间有很少的或没有原语双字。换句话说,可通过从预定数目的数据双字和任意ALIGN/NOTIFY原语双字之中去除至少一些非ALIGN/NOTIFY原语双字来重新排序网络数据帧。在一些实施例中,预定数目的数据双字是32个,使得比较模块750能够比较在帧815的前70个双字内多达32个数据双字的深度。现在,转到图10,其示出用于重新排序网络数据帧的更具体的方法1000。方法1000包括将预定数目的数据单元放置在第一FIFO缓冲器中的步骤,如步骤1002。例如,检测模块801可将预定数目的数据双字放置在帧FIFO缓冲器810中,在一些实施例中所述帧FIFO缓冲器810可以是32个双字的深度。如先前所述,在一些实施例中,可将检测模块801接收的帧805的前32个数据双字放置在帧FIFO缓冲器810中。方法1000还包括将至少为预定数目的数据单元和一个或多个散置的非数据单元放置在第二FIFO缓冲器中的步骤,如步骤1004。例如,检测模块801可将包括预定数目的数据双字和原语双字的帧805的所有流量(traffic)放置在穿过型FIFO缓冲器820中,在一些实施例中所述穿过型FIFO缓冲器820可以是70个双字的深度。然后,检测模块801继续去除穿过型FIFO820的底部双字,并根据以下所述条件对其进行传送或代替,从而使得所述穿过型FIFO820始终充满,并且一直包含恒定数目的(在一些实施例中可以是70个)双字。方法1000还包括当每次将预定数目的数据单元中的一个放置在第一FIFO缓冲器中时,计数器递加的步骤,如步骤1006。例如,当检测模块801将SOF原语放置在帧FIFO810中时,计数器840可开始计数。然后,每次将预定数目的(在一些实施例中可以是帧805的前32个)数据双字中的一个放置在FIFO810中时,计数器840可递加。此外,方法1000还包括以下步骤如果计数器没有递加到预定数目并且没有检测到帧的结束处,则通过从第二FIFO缓冲器读取的预定数据单元和至少一些非数据单元代替其它非数据单元,如步骤1008。例如,每次在检测到帧的结束处之前以及在计数器840递加到预定数目(在一些实施例中可以是32)之前,其中一个双字到达穿过型FIFO820的底部时,检测模块801可以替换数据双字和非ALIGN/NOTIFY原语双字。如先前所述,在一些实施例中,数据双字和非ALIGN/NOTIFY原语双字可以被其它非数据双字(例如SATA_X—RDY原语双字)代替。只要在第一帧双字(例如SOF)到达第二FIFO缓冲区的底部时,没有检测到帧的结束处并且计数器840没有递加到32,则将SATA_X—RDY原语双字传送到比较模块750。如上所述,通常,ALIGN/NOTIFY原语双字被按原样传送或代替。然而,如果在第一帧双字(例如SOF)到达第二FIFO缓冲区的底部时,检测到帧的结束处或者计数器840到达预定数目,则清除帧FIFO810的内容,清除计数器840和850,并且数据量(traffic)继续按原样通过所述穿过型FIFO820,同时检测模块801寻找重新开始处理的下一个帧。这样,每当检测到一个帧已经是其结束处或检测到位于SOF开始处的70个双字内的前32个数据双字时,数据量(traffic)不变。方法1000还包括以下步骤在检测到帧的结束处或者计数器递加到预定值时,传送在第一FIFO缓冲器中的数据单元,其中至少一些非数据单元不再散置于预定数目的数据单元中,如步骤1010。例如,在检测到帧的结束处或者计数器840到达预定值(例如32)时,检测模块801可将位于帧FIFO810中的数据双字作为帧815传送至比较模块150。例如,每次在穿过型FIFO820的底部检测到非ALIGN/NOTIFY原语双字时,检测模块801从帧FIFO810传送数据双字。如上所述,ALIGN/NOTIFY原语双字通常被按原样进行传送。这样,至少一些非ALIGN/NOTIFY原语双字不再散置于从帧FIFO810传送的数据双字中。此外,在检测到帧的结束处或者计数器840到达预定值时,计数器840不再递加,并且不再将双字放置在帧FIFO810中,而是将所有进来的双字继续放置在穿过型FIFO820中。方法1000还包括以下步骤在从第一FIFO缓冲器传送预定数目的数据单元之后,按原样传送第二FIFO缓冲器的内容,如步骤1012。例如,在从帧FIFO810发送了所有数据双字之后,将双字仅从穿过型FIFO820传送到比较器750,直到检测模块801检测到另一个SOF,并且处理再次开始。因此,将帧805重新排序为帧815,从而可通过比较模块750解释数据帧。例如,在上述实施例中,帧805的重新排序保证了帧的结束处或前32个数据双字是处在比较模块750所接收的前70个双字内。方法1000还包括,每当数据双字或非ALIGN/NOTIFY双字被置于穿过型FIFO320中时递加第二计数器(例如计数器850)的计数。然后,在计数器840递加到预定数目或检测到帧的结束处之后,每当改变数据双字或非ALIGN/NOTIFY原语双字时,计数器350停止递加并且开始递减。在这些实施例中,检测模块801继续替换来自穿过型FIFO820的数据双字和非ALIGN/NOTIFY原语双字,并且将替换的双字传送至比较模块750,直到计数器850的计数递减到与计数器840计算的数目匹配的计数。然后,从帧FIFO810发送所有数据双字,并且重置计数器。这样,在将帧FIFO缓冲器810清空之后,从穿过型FIFO缓冲器820发送的第一双字将是紧随在帧805中的帧结束处或数据双字32之后到来的任意双字。现在转到图11,其示出用于重新排序网络数据帧的附加方法1100。方法1100包括将预定数目的多个数据单元放置在第一FIFO缓冲器中的步骤,如步骤1102。例如,检测模块801可将预定数目的数据双字(在一些实施例中可以是32个双字的深度)放置在帧FIFO缓冲器810中。如先前所述,在一些实施例中,可将检测模块801接收的帧805的前32个数据双字放置在帧FIFO缓冲器810中。方法1100还包括将预定数目的数据单元和一个或多个散置的非数据单元放置在第二FIFO缓冲器中的步骤,如步骤1104。例如,检测模块801可将所有数据量(traffic)(包括预定数目的数据双字和帧805的原语双字)放置在经过FIFO缓冲器820中,在一些实施例中穿过型FIFO缓冲器820可以是70个双字的深度。然后,检测模块801继续去除穿过型FIFO820的底部双字,并且根据以下条件传送底部双字或丢弃(discard)底部双字,从而穿过型FIFO820始终充满,并且一直包含恒定数目的(在一些实施例中可以是70个)双字。方法1100还包括将至少一些非数据单元放置在第三FIFO缓冲器中的步骤,如步骤1106。例如,检测模块801可将帧805的非ALIGN/NOTIFY原语双字放置在原语FIFO缓冲器830中,在一些实施例中原语FIFO缓冲器830可以是70个双字的深度。此外,方法1100还包括每次将预定数目的数据单元中的一个放置在第一FIFO缓冲器中时,计数器递加的步骤,如步骤1108。例如,在检测模块801将SOF原语放置在原语FIFO810中时,计数器840可开始计数。然后,每次将预定数目的数据双字(在一些实施例中可以是帧805的前32个数据双字)中的一个放置在FIFO810中时,计数器840可进行递加。方法1100还包括以下步骤如果没有检测到帧的结束处并且计数器没有递加到预定数目,则传送位于第三FIFO中的非数据单元,而不传送从第二FIFO缓冲器中读取的预定数目的数据单元和至少一些非数据单元,如步骤1110。例如,每当在检测到帧的结束处和计数器840递加到预定数目(在一些实施例中可以是32)之前,数据双字或非ALIGN/NOTIFY原语双字到达穿过型FIFO820的底部时,检测模块801可传送位于原语FIFO缓冲器830中的非ALIGN/NOTIFY原语双字中的一个。应注意,当ALIGN/NOTIFY原语双字到达穿过型FIFO820的底部时,才传送ALIGN/NOTIFY原语双字。然而,如果在第一帧双字(例如SOF)到达穿过型FIFO820的底部时检测到帧的结束处或者计数器840到达预定数目,则清除帧FIFO810和原语FIFO830的内容,清除计数器840,并且数据量(traffic)继续按原样通过所述穿过型FIFO820,同时检测模块801寻找要重新开始处理的下一个帧。这样,每当检测到一个帧已经是结束处或检测到在从SOF开始处的70个双字内的前32个数据双字时,不改变数据量(traffic)。方法1100还包括以下步骤当检测到帧的结束处或计数器递加到预定值时,传送在第一FIFO缓冲器中的数据单元,从第一FIFO缓冲器(其中所述数据单元之间散置有很少或没有非数据单元)传送所述数据单元,如步骤1112。例如,当检测到帧的结束处或计数器840到达预定数目(例如32)时,检测模块801可将位于帧FIFO810中的数据双字作为帧815传送至比较模块750。例如,每当检测到非ALIGN/NOTIFY原语双字在穿过型FIFO820的底部时,检测模块801从帧FIFO810传送数据双字。如上所述,通常,按原样传送ALIGN/NOTIFY原语双字。这样,从帧FIFO810传送数据单元,在所述数据单元之间散置有很少或没有原语双字,因为非ALIGN/NOTIFY原语双字已经被移动至数据帧的其它部分,或者被移动至数据帧之后。此外,在检测到帧的结束处或计数器840到达预定值时,不再将双字放置在帧FIFO810中,而是将所有进来的双字继续放置在穿过型FIFO820中。方法1100还包括传送第三FIFO缓冲器的任意剩余内容,代替从第二FIFO缓冲器读取的至少一些数据单元或非数据单元,如步骤1114,重置计数器840,以及在第三FIFO缓冲器清空之后传送第二FIFO缓冲器的内容,如步骤1116。例如,在从帧FIFO810发送了所有数据双字之后,发送原语FIFO830的内容,代替在穿过型FIFO820的底部的每个非ALIGN/NOTIFY双字,直到原语FIFO830清空。此时,仅将双字从穿过型FIFO820传送至比较器750,直到检测模块801检测到另一个SOF并且处理再次开始。因此而将帧805重新排序为帧815,从而通过比较模块750来解释数据帧。例如,在上述实施例中,帧805的重新排序保证帧的结束处或前32个数据双字是处在比较模块750接收的自SOF开始处的前70个双字中。在一些实施例中,帧压縮模块800、或网络诊断组件130的其它部分也可包括使能模块802。使能模块802可以是软件、硬件、或这两者的任意组合。尽管使能模块802示出为独立的模块,但是在一些实施例中,使能模块802也可以是其它模块的一部分、或是帧压縮模块800的组件或网络诊断组件130的其它部分。在运行中,使能模块允许对运行中的帧压縮使能和禁能。例如,在一些实施例中,网络诊断组件130被配置为在SAS和SATA协议上运行。使能模块802可在SAS、SATA中、在SAS和SATA这两者中、或非SAS和SATA中使能帧压縮。这样,如果网络诊断组件130仅设置为寻找和在SAS帧上运行,则使能模块802可使得"SATA使能"关闭,从而如果SATA帧出现,即使前32个数据字不接近,网络诊断组件130也会忽略它。在另一个实例中,如果网络诊断组件130当前正寻找非数据字,或者根本就不是一个帧,则使能模块802可使得这两者的使能功能都关闭。在不是绝对必要时,该特征还减少了网络诊断组件130改变流量(traffic)的次数。实例性诊断功能如上所述,网络诊断组件130可执行多种网络诊断功能。网络诊断组件130可被配置为用作以下的任意组合误码率检测器、协议分析器、生成器、干扰器、监控器、和任意其它适合的网络诊断设备。误码率检测器在一些实施例中,网络诊断组件130可用作误码率检测器。误码率检测器可生成和/或经由通信路径来发送比特序列的初始版本。如果期望如此,则比特序列的初始版本可以是由用户选择的。误码率检测器还可以经由通信路径接收比特序列的接收版本。误码率检测器将比特序列的接收版本(或接收版本的至少一部分)与比特序列的初始版本(或初始版本的至少一部分)相比较。在执行该比较时段,误码率检测器可确定比特序列的接收版本(或接收版本的至少一部分)匹配和/或不匹配比特序列的初始版本(或初始版本的至少一部分)。因此,误码率检测器确定在相比较的比特序列之间的差值,并且生成至少部分地从所述差值中导出的统计值。这种统计值的实例可包括但不限于出错值(errors)的总数(例如,不匹配的比特或丢失的比特)、误码率等。可以理解,特定的协议规程可能要求误码率小于指定值。因此,物理通信组件和连接件(例如光缆)、通信芯片等的制造商可利用误码率检测器来确定它们的组件是否符合协议指定的误码率。此外,当配置通信组件时,可使用误码率检测器来识别在所配置的物理通信路径中的缺陷,然后对其进行物理检查。协议分析器在一些实施例中,网络诊断组件130可用作协议分析器(或网络分析器),其可用于捕获数据或比特序列,以用于进一步分析。所捕获数据的分析例如可诊断数据传输故障、数据传输出错值、性能出错值(通常己知的问题情形)和/或其它情形。如下文所述,协议分析器可被配置为经由一个或多个通信路径或信道接收比特序列。通常,比特序列包括一个或多个网络消息,例如,包、帧或其它协议适用的网络消息。优选地,协议分析器可经由被动网络连接而被动地接收网络消息。协议分析器可被配置为将接收的比特序列(或至少一部分比特序列)与一个或多个比特序列或图形相比较。在执行这种比较之前,协议分析器可选择地对所接收的比特序列进行一个或多个比特的掩码。在执行该比较时,协议分析器可确定所接收的比特序列的全部或一部分(或所接收的比特序列的比特掩码版本)匹配和/或不匹配一个或多个比特图形。在一个实施例中,可这样配置比特图形和/或比特掩码,使得比特图形可以(或不可以)匹配于包括网络消息的所接收的比特序列,其中所述网络消息具有特定的特征一一例如,具有异常的(unusual)网络地址、具有代码变异(violation)或字符出错值、具有异常的时戳、具有错误的CRC值、表示的是链路重新初始化、和/或具有多种其它特征。协议分析器可检测具有任意指定特征的网络消息,其中可经由用户输入由用户选择指定的特征。可以理解,所述指定特征可以是一个属性的存在或一个属性的缺乏。此外,还可以理解,网络分析器可用任意其它适合的方法来检测具有特定特征的网络消息。作为对检测到具有一个或多个特征的网络消息的响应,网络分析器可执行比特序列的捕获,所述比特序列可包括网络消息和/或部分网络消息。例如,在一个实施例中,当网络分析器接收新网络消息时,网络分析器可在循环式缓冲器中缓冲、高速缓存(cache)或存储一系列网络消息。一旦循环式缓冲器充满,则网络分析器可使用新接收的网络消息改写(或替换)最早的网络消息。当网络分析器接收到新网络消息时,网络分析器可检测网络消息是否具有一个或多个指定特征。作为对检测到所接收的网络消息具有一个或多个指定特征的响应,网络分析器可通过以下方式执行捕获,包括(1)停止对缓冲器的改写(因此而捕获在检测的消息之前的一个或多个网络消息),(2)使用一个或多个新接收的消息改写至少一部分或一定比例的缓冲器(因此而捕获在检测的消息之前的至少一个网络消息,以及在检测的消息之后的至少一个网络消息),或(3)改写整个缓冲器(因此而捕获在检测的消息之后的一个或多个网络消息)。在一个实施例中,用户可经由用户输入而指定用以存储在检测的消息之前的消息的缓冲器的比例,用以存储在检测的消息之后的消息的缓冲器比例,或这两者。在一个实施例中,协议分析器可将捕获的比特流转换成另一个格式。作为对检测到具有一个或多个特征的网络消息的响应,网络分析器可生成适用于启动比特序列的捕获的触发。此外,作为对接收到适用于启动比特序列的捕获的触发的响应,网络分析器可执行比特序列的捕获。例如,网络分析器可被配置为在多个网络分析器之间发送和/或接收触发信号。作为对检测到所接收的网络消息具有一个或多个指定特征的响应,网络分析器可执行捕获和/或发送触发信号至一个或多个网络分析器,该网络分析器被配置为对接收到这种触发信号进行响应而执行捕获。在2004年6月30日提交的题为在设备之间传播信号以触发网络数据的捕获(PROPAGATIONOFSIGNALSBETWEENDEVICESFORTRIGGERINGCAPTUREOFNETWORKDATA)的美国专利申请10/881,620描述了示出触发信号和其它捕获系统的实施例,其全部内容通过引用结合于此。可以理解,对捕获的触发可通过对检测到以下任意特定情况的响应而进行--比特序列和比特图形是否匹配,是否接收到外部触发信号,是否检测到一个状态(例如,当协议分析器的缓冲器充满时),是否检测到事件,是否检测到多项网络消息事件,是否检测到事件的不存在,是否检测到用户输入或任意其它适合的情况。协议分析器可选择地被配置为对如下的网络消息进行过滤(例如,具有或缺乏特定特征的网络消息),例如,来自特定节点的消息,到达特定节点的消息,在多个特定节点之间的消息,特定格式或类型的网络消息,具有特定出错值类型的消息等。因此,使用一个或多个比特掩码、比特图形等,可使用协议分析器识别具有特定特征的网络消息,并且至少部分地基于那些特定特征来确定是存储还是丢弃那些网络消息。协议分析器可选择地被配置为捕获一部分网络消息。例如,协议分析器可被配置为存储网络消息的报头的至少一部分,而丢弃数据有效载荷的至少一部分。因此,协议分析器可被配置为捕获和丢弃网络消息的任意适当的部分。可以理解,特定协议规范可需要网络消息具有特定特征。因此,网络节点等的制造商使用协议分析器来确定它们的产品是否符合协议。此外,当配置节点时,可使用协议分析器来识别在所配置的节点或所配置的网络的其它部分中的缺陷。生成器在一些实施例中,网络诊断组件130可用作生成器。生成器可生成比特序列和/或经由一个或多个通信路径或信道发送比特序列。通常,比特序列包括网络消息,例如,包,帧或其它协议适用的网络消息。网络消息可包括在网络上的节点之间的模拟网络流量。在一个实施例中,比特序列可以是消息的预定序列。其有利之处在于,网络管理员可评估节点(和/或网络上的其它节点)如何响应于模拟的网络流量(traffic)。因此,网络管理员能够识别性能偏差,并采取适当的措施以避免进一步的性能偏差。在一个实施例中,生成器可执行脚本(script),以生成模拟的网络流量。脚本可使得生成器以状态机或任意其它适合的方式来动态模拟网络流量。例如,所述脚本可如下所述而包括一个或多个元素"在状态X中,如果接收到网络消息A,则传输网网络消息B并跳转至状态Y(InstateX,ifnetworkmessageAisreceived,transmitnetworkmessageBandmovetostateY)"。生成器可以有利的方式以任意其它适合的方式识别出网络消息(及其任意特征),协议分析器可包括但不限于如何识别出网络消息(及其任意特征)。脚本还可包括时间延迟(delay),在作为响应传输消息之前该时间延迟指示生成器在接收消息之后等待的指定时间量。作为对接收到消息的响应,生成器可传输完全是预定的响应消息。然而,作为对接收到消息的响应,生成器可传输不是完全预定的响应消息,例如,包括一些数据或所接收消息的其它部分的响应消息。干扰器在一些实施例中,网络诊断组件130可用作干扰器。干扰器可经由一个或多个通信路径或信道接收、生成和/或发送一个或多个比特序列。通常,比特序列包括网络消息(例如,包、帧或其它符合协议的网络消息),网络消息包括在网络上的节点之间的网络流量。干扰器可被配置为网络的内嵌组件,从而干扰器可接收和重传(或转发)网络消息。在重传所接收的网络消息之前,干扰器可选择地改变至少一部分网络流量,其改变会引来协议出错值或其它类型出错值。通过改变至少一部分网络流量,干扰器可生成用于测试网络的流量。例如,网络管理员随后可评估网络上的节点如何对这些出错值作出响应。例如,网络系统设计者可执行多个不同诊断测试中的任一个,以确定如下情形例如系统是否对未完成、错位(misplace)或错过任务或序列;如何处理指错的(misdirected)帧或混淆的(confusing)帧;禾卩/或如何处理错位的排序组作出适当响应。在一些实施例中,网络诊断组件130可包括在Iryami等人的的美国专利No.6,268,808Bl的题为高速数据修改系统和方法(HIGHSPEEDDATAMODIFICATIONSYSTEMANDMETHOD)中公开的任意适合的干扰器(或其它网络诊断系统或方法),其全部内容通过引用合并于此。在一个实施例中,为了确定要改变哪个网络消息,干扰器可被配置为将例如网络消息等所接收的比特序列(或所接收的比特序列的一部分)与一个或多个比特序列或图形相比较。在执行该比较之前,干扰器可选择地对所接收的比特序列应用一个或多个比特掩码。在执行该比较时,干扰器可确定所接收的比特序列的全部或一部分(或所接收的比特序列的比特掩码版本)匹配和/或不匹配于一个或多个比特图形。在一个实施例中,可配置比特图形和/或比特掩码,使得比特图形可以(或不可以)匹配于所接收的比特序列(或部分所接收的比特序列),所接收的比特序列包括来自特定节点的网络消息,到达特定节点的消息,在多个特定节点之间的网络消息,特定格式或类型的网络消息等。因此,所述干扰器被配置为检测具有任意特定特征的网络消息。在检测到具有任意特定特征的网络消息时,干扰器对网络消息和/或在该网络消息之后的一个或多个网络消息进行改变。监控器在一些实施例中,网络诊断组件130可用作监控器,其可用于从具有特定特征的一个或多个网络消息、具有特定特征的一个或多个会话等中导出统计值。如下所述,监控器可被配置为经由一个或多个通信路径或信道接收比特序列。通常,监控器可经由一个或多个被动网络连接接收网络消息。为了确定应该从中导出统计值的网络消息和/或会话,监控器可被配置为将例如网络消息等所接收的比特序列(或所接收的比特序列的一部分)与一个或多个比特序列或图形相比较。在执行该比较时,监控器可确定所接收的比特序列的全部或一部分(或所接收的比特序列的比特掩码版本)与一个或多个比特图形的匹配和/或不匹配。在一个实施例中,可配置比特图形和/或比特掩码,使得比特图形可以(或不可以)匹配于所接收的比特序列(或部分所接收的比特序列),所接收的比特序列包括来自特定节点的网络消息,到达特定节点的网络消息,在多个特定节点之间的消息,特定格式或类型的网络消息,具有特定出错值的网络消息等。因此,监控器可被配置为检测具有任意特定特征的网络消息,所述特征包括但不限于网络消息是否与节点间的特定会话相关联。在检测到具有特定特征的网络消息时,监控器可创建和更新表中的输入项,以保持对于各个网络消息和/或对于包含节点之间的包的会话的统计值。例如,监控器可对物理出错值(例如,比特传输出错值、CRC出错值等)、协议出错值(例如,超时、错过网络消息、重试、次序混乱)、其它出错值情形、协议事件(例如,中止(abort)、缓冲器充满的消息)等进行计数。此外,作为实例,监控器可创建特定会话的统计值,例如,在会话中交流的包的数目,与会话中交流的包相关的响应次数,事务延缓(latency),块传输大小,传输完成状态,总吞吐量(aggregate)等。可以理解,特定特征可以是属性的存在或属性的缺乏。在一些实施例中,网络诊断组件130可包括在2004年1月30日提交的题为多用途网络诊断模块(MULTI-PURPOSENETWORKDIAGNOSTICMODULES)的美国专利申请No.l0/769,202的任意特征和/或执行其中的任意方法,其全部内容通过引用合并于此。实例性系统可以理解,网络诊断组件130可用于实现多种系统。在一个实施例中,网络诊断组件130可包括印刷电路板。印刷电路板可包括CPU模块。在一个实施例中,网络诊断组件130可包括叶片装置(blade)。该叶片装置可包括印刷电路板、接口及其任意组合。在一个实施例中,网络诊断组件130可包括底盘(chassis)计算系统。该底盘计算系统可包括一个或多个CPU模块,其可适用于与一个、两个、或更多个叶片装置或其它印刷电路板对接。例如,叶片装置可具有接口,通过该接口所述诊断模块可向底盘计算系统的CPU模块发送网络诊断数据。该底盘计算机系统可适用于接收一个或多个印刷电路板或叶片装置。CPU模块可将其接收的网络诊断数据传输至本地存储设备、远程存储设备或任意其它适合的系统,用于提取和/或进一步分析诊断数据。客户端软件程序可检索、访问和/或管理诊断数据,以用于任意适合的用途。用于存储和检索网络诊断数据的系统和方法的实例包括但不限于,2002年11月27日提交的题为高速通信网络的网络流量(traffic)和I/O事务监视的系统和方法(ASYSTEMANDMETHODFORNETWORKTRAFFICANDI/OTRANSACTIONMONITORINGOFAHIGHSPEEDCOMMUNICATIONSNETWORK)的美国专利申请序号10/307,272所述,其全部内容通过引用合并于此。在一个实施例中,网络诊断组件130可包括应用器件。根据特定配置,该应用器件可包括一个或多个CPU模块和一个或多个诊断模块的任意适当组合。在一个实施例中,应用器件可包括和/或与一个或多个存储设备进行通信,其有利于用于存储任意适合的诊断数据、统计值等。在一个实施例中,应用器件可包括和/或与一个或多个客户端接口模块进行通信,其有利于用于向用户显示信息,从客户端软件程序接收用户输入,或向客户端软件程序发送信息。该应用器件还可包括和/或与适用于显示信息的一个或多个显示设备(例如监视器)以及与适用于接收用户输入的一个或多个用户输入设备(例如,键盘、鼠标、触摸屏等)进行通信,或与这两者均通信。可以理解,网络诊断组件130可包括多个其它适合的网络诊断组件中的任一个。实例性运行和计算环境可使用软件、硬件或硬件和软件这两者实现上述方法和系统。例如,软件可以有利方式配置为驻留在可寻址的存储介质上,以及配置为在一个或多个处理器上执行。因此,软件、硬件或这两者通过实例可包括任意适合的模块,例如软件模块、面向对象的软件组件、类组件和任务组件、线程、函数、属性、过程、子例程、程序代码段、驱动器、固件、微码、电路、数据、数据库、数据结构、表、数组、变量、现场可编程门阵列("FPGA")、现场可编程逻辑阵列("FPLA")、可编程逻辑阵列("PLA")、任意可编程逻辑器件、专用集成电路("ASIC")、控制器、计算机、和以实现上述方法和系统的固件。可将软件、硬件或这两者中提供的功能组合到更少组件中,或者进一步可分装到附加组件中。此外,可以有利方式实现组件以在一个或多个计算设备上执行。这里使用的"计算设备"是广泛性术语,并且使用其普通含义,例如其包括但不限于以下设备,包括个人计算机、台式计算机、便携式计算机、掌上型计算机、通用计算机、专用计算机、移动电话、个人数字助理(PDA)、互联网终端、多处理器系统、手持计算设备、便携式计算设备、基于微处理器的消费者电器、可编程消费者电器、网络PC、小型计算机、大型计算机、可生成数据的计算设备、可具有存储数据的需求的计算设备等。此外,一个或多个软件模块、一个或多个硬件模块或这两者可包括用于实现这里所述的任意方法的其中一些或全部的装置。此外,一个或多个软件模块、一个或多个硬件模块或这两者可包括用于实现这里所述的任意其它功能或特征的装置。在本发明的范围中实施例还包括计算机可读介质,用于承载或具有在其上存储的计算机可执行指令或数据结构。这种计算机可读介质可以是能够由计算设备访问的任意可用介质。作为实例,但不是用于限制,这种计算机可读介质可包括任意存储设备或任意其它介质,其可用于承载或存储计算机可执行指令或数据结构形式的期望程序代码装置,并且可由计算设备访问。当在网络或另一个通信连接(硬件接线、无线或硬件接线或无线的组合)上向计算机传送或提供信息时,计算机完全可以将该连接看作计算机可读介质。因此,任和这种连接都完全可以称作计算机可读介质。上述组合也可包括在计算机可读介质的范围内。计算机可执行指令例如包括使得计算设备执行某个功能或一组功能的指令和数据。数据结构例如包括数据帧、数据包、或其它定义或格式化的数据组等具有包含用于给可用方法和操作的执行提供便利的信息字段。可以在计算机可读介质上存储或发送包括上文提供的实例的计算机可执行指令和数据结构。本发明可以以其它具体形式实现,而不脱离其精神或实质特征。所述的实施例在所有方面均可认为是示例性的,而不是限制。因此,本发明的范围可通过所附权利要求指定,而并非上述说明。在权利要求的等同物的含义和范围内的所有变化均包含在其范围内。权利要求1.一种网络诊断设备,内嵌于网络中的第一节点和第二节点之间,该网络诊断设备包括第一模块,配置为从与所述第二节点通信的所述第一节点接收低速信号图形,其中所述低速信号图形包括至少一个第一信号单元;第二模块,配置为在存储器中记录所述第一信号单元;第三模块,配置为生成待记录在所述存储器中的至少一个后继信号单元的代表项,该后继信号单元与所述第一信号单元相同;以及第四模块,配置为生成待记录在所述存储器中的时间长度的记录,所述时间长度为所述第一信号单元和所述后继信号单元的时间长度。2.根据权利要求1所述的网络诊断设备,其中所述低速信号图形还包括与所述第一信号单元不同的第二信号单元,所述网络诊断设备还包括第二模块,还配置为在所述存储器中记录所述第二信号单元;第三模块,还配置为生成待记录在所述存储器中的至少一个信号单元的代表项,该至少一个信号单元后继于所述第二信号单元且与所述第二信号分量相同;以及第四模块,还配置为生成待记录在所述存储器中的时间长度的记录,所述时间长度为所述第二信号单元和与所述第二信号单元相同的后继信号单元的时间长度。3.根据权利要求2所述的网络诊断设备,其中所述第二信号单元是数据突发或DC空闲之一。4.根据权利要求2所述的网络诊断设备,其中所述第二信号单元是全振幅数据突发分量中的一个或零振幅分量中的一个。5.根据权利要求1所述的网络诊断设备,其中将所生成的记录显示在与所述网络诊断设备耦合的显示设备上。6.根据权利要求1所述的网络诊断设备,其中所述第一模块是OOB/速度协商状态机。7.根据权利要求1所述的网络诊断设备,其中所述第二模块是轨迹格式化/压縮引擎。8.根据权利要求1所述的网络诊断设备,其中所述第三模块是压縮计数器。9.根据权利要求1所述的网络诊断设备,其中所述第四模块是时戳发生器。10.根据权利要求1所述的网络诊断设备,其中所述第一节点和第二节点是SAS/SATA节点,所述网络诊断组件是SAS/SATA网络组件。11.根据权利要求l所述的网络诊断设备,其中所述网络诊断设备是误码率检测器、协议分析器、生成器、干扰器和监控器中的一个。12.根据权利要求1所述的网络诊断设备,其中所述第一信号单元是数据突发或DC空闲之一。13.根据权利要求1所述的网络诊断设备,其中所述第一信号单元是全振幅数据突发分量中的一个或零振幅分量中的一个。14.一种网络诊断设备,内嵌于网络中的第一节点和第二节点之间,该网络诊断设备包括滑动比较器模块,配置为从与所述第二节点通信的所述第一节点接收网络数据帧,所述网络数据帧包括一个或多个数据单元;使用开始地址以指定在所述数据帧中的何处开始比较操作;使用结束地址以指定在所述数据帧中的何处结束所述比较操作;使用匹配模板以指定用于比较的特定条件;以及通过在所述开始地址和结束地址所指定的所述数据帧的部分中搜索与所述匹配模板的比较条件至少部分匹配的数据单元来执行比较操作,其中所述数据单元出现在所述数据帧的指定部分中的任意位置。15.根据权利要求M所述的网络诊断设备,其中所述滑动比较器模块是状态机。16.根据权利要求14所述的网络诊断设备,还包括帧比较器模块,其被配置为对所述数据帧的特定数目的数据单元执行比较操作;以及匹配比较器模块,其被配置为接收由所述帧比较器模块和所述滑动比较器模块这两者所执行的比较操作的结果,并确定是否出现成功的匹配。17.根据权利要求16所述的网络诊断设备,其中所述匹配比较器模块是状态机。18.根据权利要求14所述的网络诊断设备,其中所述数据帧的一个或多个数据单元的大小是四个字节,并且所述滑动比较器还被配置为比较单个数据单元的所述四个字节。19.根据权利要求14所述的网络诊断设备,其中所述数据帧的一个或多个数据单元的大小是四个字节,并且所述滑动比较器还被配置为比较第一数据单元的最后三个字节和邻近的第二数据单元的第一字TJ。20.根据权利要求14所述的网络诊断设备,其中所述数据帧的一个或多个数据单元的大小是四个字节,并且所述滑动比较器还被配置为比较第一数据单元的最后两个字节和邻近的第二数据单元的前两个字节。21.根据权利要求14所述的网络诊断设备,其中所述数据帧的一个或多个数据单元的大小是四个字节,并且所述滑动比较器还被配置为比较第一数据单元的最后一个字节和邻近的第二数据单元的前三个字节。22.根据权利要求14所述的网络诊断设备,其中所述第一节点和第二节点是SAS/SATA节点,所述网络诊断组件是SAS/SATA网络组件。23.根据权利要求14所述的网络诊断设备,其中所述网络诊断设备是误码率检测器、协议分析器、生成器、干扰器和监控器中的一个。24.根据权利要求14所述的网络诊断设备,其中所述数据帧的一个或多个数据单元的大小是多个字节,并且所述滑动比较器还被配置为比较单个数据单元的所述多个字节。25.根据权利要求14所述的网络诊断设备,其中所述数据帧的一个或多个数据单元的大小是多个字节,并且所述滑动比较器还被配置为比较第一数据单元的第一数目的字节和邻近的第二数据单元的第二数目的字节。26.—种网络诊断设备,内嵌于网络中的第一节点和第二节点之间,该网络诊断设备包括第一模块,配置为从与所述第二节点通信的所述第一节点接收网络数据帧,所述网络数据帧包括多个数据单元,所述多个数据单元中散置有一个或多个非数据单元,用以中断所述数据单元的接近和流动;以及所述第一模块还被配置为,通过去除或移动至少一些散置在所述多个数据单元中的所述非数据单元来重新排序所述网络数据帧。27.根据权利要求26所述的网络诊断设备,其中所述第一模块是状态机。28.根据权利要求26所述的网络诊断设备,还包括第二模块,配置为解释所重新排序的网络数据帧。29.根据权利要求26所述的网络诊断设备,还包括第一FIFO缓冲器,配置为使得所述第一模块将预定数目的多个数据单元放置于其中;第二FIFO缓冲器,配置为使得所述第一模块将所述预定数目的数据单元和所散置的一个或多个非数据单元放置于其中;第一计数器,被配置为当所述第一模块将数据单元放置在所述第一FIFO缓冲器中时进行递加;其中所述第一模块被配置为,如果所述计数器没有递加到所述预定数目且没有检测到帧的结束处,则当从所述第二FIFO缓冲器读取所述预定数据单元和至少一些所述非数据单元时,用其它非数据单元代替所述预定数据单元和至少一些所述非数据单元;其中所述第一模块还被配置为,当所述计数器递加到所述预定数目或检测到帧的结束处时,传送位于所述第一FIFO缓冲器中的数据单元,其中至少一些所述非数据单元不再散置于所述预定数目的数据单元中;以及其中所述第一模块还配置为,当从所述第一FIFO缓冲器传送所述数据单元之后,按原样传送所述第二FIFO缓冲器的内容。30.根据权利要求29所述的网络诊断设备,还包括第二计数器,配置为当所述第一模块将所述预定数目的数据单元和至少一些所述非数据单元放置在所述第二缓冲器中时进行递加,以及当所述第一计数器递加到所述预定数目或检测到帧的结束处时开始递减;其中所述第一模块被配置为继续用其它非数据单元替换从所述第二FIFO缓冲器读取的所述预定数据单元和至少一些非数据单元,直到所述第二计数器递减到与所述第一计数器计数的数目匹配的计数。31.根据权利要求29所述的网络诊断设备,其中所述第一FIFO缓冲器的深度为32个双字,所述第二FIFO缓冲器的深度为70个双字。32.根据权利要求26所述的网络诊断设备,还包括第一FIFO缓冲器,配置为使得所述第一模块将所述预定数目的数据单元放置于其中;第二FIFO缓冲器,配置为使得所述第一模块将所述预定数目的数据单元和一个或多个所述非数据单元放置于其中;第三FIFO缓冲器,配置为使得所述第一模块将所有非ALIGN/NOTIFY非数据单元放置于其中;第一计数器,配置当在所述第一模块将数据单元放置在所述第一FIFO缓冲器中时进行递加;其中所述第一模块被配置为,如果所述计数器没有递加到预定数目且没有检测到帧的结束处,则传送位于所述第三FIFO中的非数据单元,并且不传送在所述第二FIFO缓冲器中的所述预定数目的数据单元和非ALIGN/NOTIFY非数据单元;其中所述第一模块还被配置为,在所述计数器递加到所述预定数目或检测到帧的结束处时,传送位于所述第一FIFO缓冲器中的所述预定数目的数据单元,其中所述预定数目的数据单元与散置于其间的变少了的非数据单元一起或不与非数据单元一起从所述第一FIFO缓冲器传送;以及所述第一模块还被配置为,传送所述第三FIFO缓冲器的任何剩余内容以代替从所述第二FIFO缓冲器读取的至少一些所述非数据单元和数据单元,以及在所述第三FIFO缓冲器清空之后,传送所述第二FIFO缓冲器的内容。33.根据权利要求32所述的网络诊断设备,其中所述第一FIFO缓冲器的深度为32个双字,所述第二FIFO缓冲器的深度为70个双字,所述第三FIFO缓冲器的深度为70个双字。34.根据权利要求26所述的网络诊断设备,其中所述第一节点和第二节点是SAS/SATA节点,所述网络诊断组件是SAS/SATA网络组件。35.根据权利要求26所述的网络诊断设备,其中所述网络诊断设备是误码率检测器、协议分析器、生成器、干扰器和监控器中的一个。36.根据权利要求26所述的网络诊断设备,其中所述网络诊断设备被配置为,当预定数目的所述多个数据单元没有落在所述网络数据帧的期望位置之内时,仅重新排序所述网络数据帧。37.根据权利要求26所述的网络诊断设备,其中所述网络诊断设备被配置为支持至少两个网络协议,所述网络诊断设备还包括第二模块,配置为当在所述第一网络协议、所述第二网络协议、或所述第一网络协议和第二网络协议这两者下运行时,使得所述第一模块能重新排序所述网络数据帧,以及所述第二模块还被配置为阻止重新排序所述网络数据帧。全文摘要一种内嵌于网络中的两个节点之间的网络诊断设备或组件,用以压缩网络数据流量,从而保持可用存储空间。网络诊断组件从与第二节点通信的第一节点接收低速信号图形。可通过接收模块接收低速信号图形。低速信号图形至少包括第一信号分量。网络诊断组件在存储器中记录第一信号分量。网络诊断组件还在存储器中记录与第一信号分量相同的至少一个后继信号分量的代表项。然后,网络诊断组件可在存储器中记录第一信号分量和后继信号分量的时间长度。文档编号H04L12/26GK101411124SQ200780010952公开日2009年4月15日申请日期2007年2月14日优先权日2006年2月14日发明者乔治·A·布里斯,史蒂文·R·克劳兹,基兰迈·维达纳巴特拉,安德鲁·J·米尔恩,杰弗里·希博特,鲁梅尔·R·加西亚申请人:菲尼萨公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1