MPC8533E eTSEC接收队列与过滤器配置实战指南
1. 项目概述与核心价值在嵌入式网络设备开发尤其是基于PowerQUICC III这类高性能通信处理器的系统中网络吞吐量和CPU效率是永恒的核心矛盾。当千兆甚至更高速率的以太网数据流持续涌入时如果每个数据包都触发一次CPU中断那么处理器很快就会淹没在频繁的上下文切换中无暇处理真正的应用逻辑。eTSECEnhanced Three-Speed Ethernet Controller作为MPC8533E等处理器集成的网络引擎其真正的威力不仅在于支持10/100/1000Mbps三种速率更在于其硬件层面实现的、高度可配置的接收队列管理与数据包过滤机制。这套机制允许开发者将网络流量在硬件层面进行智能分类和分发将特定类型的流量导向不同的内存队列并配合中断聚合Interrupt Coalescing技术将多个数据包的中断合并为一次从而将CPU从繁重的网络中断处理中解放出来。理解并熟练配置这些寄存器是从“能让网卡跑起来”到“能让网卡在重载下依然高效、稳定运行”的关键跨越。本文将深入解析eTSEC接收路径的核心控制寄存器拆解其设计哲学并提供基于手册的实战配置指南与避坑要点。2. eTSEC接收架构与核心寄存器概览eTSEC的接收路径是一个由DMA引擎、缓冲区描述符环RxBD Ring、解析器Parser和过滤器Filer协同工作的复杂流水线。其核心思想是“分类处理减少打扰”。数据包从PHY进入MAC经过CRC校验后由硬件解析器提取关键信息如MAC地址、IP地址、端口号、VLAN标签等形成一组“属性”Property。随后可编程的接收队列过滤器Receive Queue Filer根据这些属性将数据包“判决”到不同的接收队列RxBD Ring。每个队列独立管理自己的缓冲区描述符链并可以独立配置中断行为。整个流程的管控就落在为数不多但功能强大的几个寄存器组上。2.1 核心寄存器功能地图为了全局把握我们可以将这些寄存器按功能分为四大类队列状态与控制类负责监控队列运行状态、启停队列。RSTAT (Receive Status Register)反映队列暂停QHLT和接收完成RXF状态。RQUEUE (Receive Queue Control Register)启用EN或禁用某个接收队列并控制数据提取EX到缓存。中断优化类旨在减少中断频率提升CPU效率。RXIC (Receive Interrupt Coalescing Register)配置中断聚合的帧数阈值ICFT和时间阈值ICTT。数据包分类与过滤类这是实现智能分发的核心。RBIFX (Receive Bit Field Extract Control Register)定义如何从数据包原始字节流中提取用户自定义的“任意位域”ARB为过滤提供灵活的依据。RQFAR (Receive Queue Filer Table Address Register)指向过滤器规则表Filer Table的索引。RQFCR (Receive Queue Filer Table Control Register)定义过滤器规则的行为如指向哪个队列、是否拒绝、比较操作。RQFPR (Receive Queue Filer Table Property Register)定义过滤器规则要匹配的属性值或掩码。缓冲区管理类管理DMA与内存的交互。MRBLR (Maximum Receive Buffer Length Register)定义每个接收缓冲区的最大长度必须是64字节的倍数。RBDBPH (Receive Data Buffer Pointer High Register)为所有接收缓冲区提供统一的高位地址基址。RBPTR0–RBPTR7指向各个接收队列描述符环中当前或下一个要使用的缓冲区描述符BD的指针。理解这个功能地图后我们再深入每个寄存器的细节就能知其然更知其所以然。3. 接收队列的启停、状态与中断管理3.1 RSTAT寄存器队列的“健康监测仪”RSTAT寄存器是一个“写1清除”Write-1-to-Clear的状态寄存器它提供了两个维度的信息队列暂停状态和接收事件状态。QHLT (Queue Halt) 位 (Bit 8-15)这是一个硬件设置的标志位。当某个接收队列因为某些异常情况如DMA错误、缓冲区不足等无法继续处理数据时硬件会自动将对应的QHLTn位置1。此时所有发往该队列的数据包都会被直接丢弃。这是一个非常重要的保护机制防止错误状态蔓延。手册特别强调用户通过设置DMACTRL[GRS]Graceful Receive Stop来优雅停止接收并不会导致QHLT置位。软件在检测到QHLT置位后必须首先排查并解决底层问题如补充缓冲区描述符然后向该位写1才能重新启用该队列的接收功能。忽略这个状态会导致该队列“静默失效”流量丢失却无迹可寻。RXF (Receive Frame Event) 位 (Bit 24-31)当有数据帧被成功接收到某个队列并且全局中断事件寄存器IEVENT[RXF]被置位时对应的RXFn位会被置1。这为软件提供了一种快速查询是哪个队列产生了接收事件的方法无需遍历所有队列的BD状态。在处理完中断后软件需要写1清除相应的RXF位。实操心得状态寄存器的处理哲学对于QHLT这类硬件错误状态我的习惯是在中断服务程序ISR或轮询状态的任务中定期检查RSTAT。一旦发现某个QHLT被置位立刻记录错误日志并触发一个错误恢复流程而不是简单地清除它。因为清除只是让硬件继续工作但根本原因如内存访问错误可能依然存在。对于RXF在多个队列共享一个中断线的情况下它可以高效地定位中断源。通常的做法是进入RX中断后读取RSTAT与使能的中断掩码进行操作然后循环处理所有RXF置位的队列处理完一个队列的数据后立即清除该队列的RXF位。3.2 RXIC寄存器中断频率的“节流阀”中断聚合是提升性能的关键。其原理很简单不是来一个包就打断一次CPU而是积累一定数量的包帧数阈值或等待一段时间时间阈值满足任一条件后再产生一次中断让CPU批量处理。ICEN (Bit 0)总开关。必须置1才能启用中断聚合。ICCS (Bit 1)时钟源选择。这决定了定时器ICTT的计数速度。0每64个接收接口时钟TSECn_GTX_CLK计数一次。这直接与线速相关。1每64个系统时钟计数一次。手册推荐在FIFO模式下使用此模式因为其时基更稳定与总线时钟同步利于预测中断延迟。ICFT (Bit 3-10)帧数阈值。设置一个大于0的值例如8。当接收到的、且其BD中I中断位被设置的帧数达到此阈值时立即触发中断。ICTT (Bit 16-31)时间阈值。设置一个大于0的值。当第一个I位置位的帧到达后启动此定时器。如果在定时器减到0之前未达到ICFT的帧数也会触发中断。这确保了即使流量小数据包也不会在DMA缓冲区中等待过久。中断聚合的工作流程第一个I位置位的帧到达启动ICTT定时器重置为设定值并开始倒数帧计数器清零。后续I位置位的帧到达帧计数器加1。若帧计数器达到ICFT立即触发中断重置ICTT和帧计数器。若ICTT定时器倒数到0立即触发中断重置ICTT和帧计数器。中断被响应后硬件状态清零等待下一个I位置位的帧到来重新开始循环。配置陷阱与经验ICFT和ICTT必须大于0则行为不可预测。通常对于低延迟要求的应用如音视频流可以设置较小的ICFT如2-4和较小的ICTT以牺牲部分CPU效率换取更快的响应。对于高吞吐量应用如文件传输可以设置较大的ICFT如32-64和适中的ICTT最大化批量处理能力。I位的控制权中断聚合只针对那些BD中IInterrupt位被设置为1的帧。这给了软件极大的灵活性。你可以为高优先级的队列如控制信令的BD设置I1让其及时触发中断为低优先级的批量数据队列的BD设置I0配合轮询方式处理实现绝对的零中断开销。时钟源选择如果你的系统对中断延迟的确定性要求高建议使用系统时钟ICCS1。因为接收接口时钟可能与系统总线时钟不同步其抖动会导致中断触发时间的不确定性。3.3 RQUEUE寄存器队列的“功能开关”RQUEUE寄存器控制着8个接收队列Ring 0-7的基本使能和数据提取。EN0-EN7 (Bit 24-31)队列使能位。这是最基础的开关。1表示该队列参与接收轮询0则表示完全禁用。默认只有Ring 0是使能的。如果你配置了多队列但忘记启用它们流量将只会进入Ring 0。EX0-EX7 (Bit 8-15)数据提取使能位。这是一个高级特性与ATTRAttribute寄存器配合使用。当置1时DMA在将数据写入内存后还会根据ATTR寄存器的配置将数据“提取”到处理器缓存中。这可以显著提升后续CPU访问这些网络数据的速度因为数据已经在高速缓存里了。但需要谨慎使用因为这会污染缓存如果数据很快又被新数据覆盖或CPU不立即处理反而会降低整体缓存效率。通常对于需要被CPU频繁、快速访问的队列如存放协议栈控制帧的队列可以开启此功能。4. 可编程接收队列过滤器数据包的“智能交通警察”这是eTSEC最强大也最复杂的部分。它允许你基于数据包的几乎任何特征将其分发到指定的队列。其核心是一个由256个条目Entry组成的可编程规则表每个条目包含一个控制字RQCTRL通过RQFCR访问和一个属性字RQPROP通过RQFPR访问。4.1 规则表访问机制RQFAR、RQFCR与RQFPR规则表是间接访问的类似于一个内存映射的数组。设置索引首先向RQFAR寄存器写入你想要读写的规则条目的索引0-255。读写控制字然后通过读写RQFCR寄存器实际上就是在操作RQFAR所指向的那个条目的RQCTRL字。读写属性字同理通过读写RQFPR寄存器就是在操作同一个条目的RQPROP字。这种设计简化了硬件但要求软件必须严格按顺序操作先设索引再读写内容。4.2 属性提取器RBIFX寄存器在过滤之前需要从原始数据包中提取出可供比较的“属性”。硬件解析器会自动提取标准属性如MAC、IP、端口等。但对于一些特殊需求比如想基于TCP标志位或自定义协议头中的某个字段进行过滤就需要RBIFX寄存器。RBIFX允许你定义最多4个字节B0-B3从数据包的不同位置提取出来拼接成一个32位的用户自定义属性ARB。每个字节的提取由两个字段控制BnCTL(2 bits)定义提取的基准位置。00不提取ARB中对应字节为0。01从以太网目标地址DA的第一个字节向前偏移(BnOFFSET - 8)字节。负偏移可以指向前导码Preamble这提供了极大的灵活性。10从L2头如以太网头的最后一个字节之后偏移BnOFFSET字节。这通常指向L3头如IP头的开始或内部。11从L3头如IP头的最后一个字节之后偏移BnOFFSET字节。这通常指向L4头如TCP/UDP头的开始或内部。BnOFFSET(6 bits)具体的偏移量。例如如果你想提取TCP头中的标志位字段位于TCP头第13字节从L3头结束偏移12字节你可以设置B0CTL11从L3头后开始B0OFFSET12。这样TCP标志位字节就会被放入ARB的字节0。重要限制手册明确指出当使用BnCTL10或11时需要确保解析器深度RCTRL[PRSDEP]配置正确。10需要PRSDEP为1x解析到L311需要PRSDEP为11解析到L4。如果数据包不符合预期如非IP包控制器仍会尝试提取但结果可能无意义。因此在编写依赖于深层解析的过滤规则时最好在前面加上PID1的规则来匹配IP协议IP4或IP6位以确保规则在正确的协议上下文中生效。4.3 规则控制字RQFCR寄存器详解RQFCR定义了当属性匹配时硬件应该做什么。Q (Bit 16-21)目标队列索引0-63。这是规则匹配成功后数据包将要被送达的队列编号。这里有一个关键概念虚拟队列。当RCTRL[FSQEN] 1时Q的值直接作为目标RxBD Ring的索引0-7。这是最直接的映射。当RCTRL[FSQEN] 0时硬件只使用8个物理RxBD Ring0-7但每个Ring上可以承载8个“虚拟队列”。此时目标队列索引Q会对8取模Q mod 8来决定使用哪个物理Ring而Q字段本身完整的0-63值会被写入接收帧控制块RxFCB供软件进一步判断该使用哪个虚拟队列。这实现了硬件8队列软件64队列的扩展能力。CLE (Bit 22) AND (Bit 24)集群Cluster控制位。这是实现复杂逻辑过滤如“与”、“或”、“非”的关键。AND1表示当前条目和下一个条目必须同时匹配逻辑与规则才生效。常用于组合匹配如“目的IP是A且目的端口是80”。CLE1与AND配合用于标记一个集群的入口或出口。集群不能嵌套。如果AND1且CLE1表示匹配成功后进入一个集群后续条目被视为该集群的一部分直到遇到另一个CLE1且AND0的条目集群出口才退出。如果匹配失败则跳过整个集群直到出口。AND0且CLE0独立条目匹配即执行。AND0且CLE1集群出口。REJ (Bit 23)拒绝位。若AND0且本条目匹配则REJ1会直接丢弃该帧忽略Q字段。REJ0则接受帧并发送到队列Q。如果AND1REJ位被忽略。CMP (Bit 25-26)比较操作。定义如何将提取的属性与RQFPR中的值进行比较。00:(property mask) RQPROP等于01:(property mask) RQPROP大于等于10:(property mask) ! RQPROP不等于11:(property mask) RQPROP小于特殊规则当PID0时CMP有特殊含义见下文。PID (Bit 28-31)属性标识符。决定RQFPR中的值RQPROP应被解释为何种属性。这是过滤器的“词汇表”。4.4 规则属性字RQFPR寄存器与PID详解RQFPR的含义完全由RQFCR[PID]决定。手册中的Table 15-33是核心查询表。PID 0x0 (MASK)这不是一个用于匹配的属性而是用于设置全局掩码寄存器。当PID0时RQFPR中的32位值会被直接加载到过滤器的mask_register中。这个掩码会应用于后续所有属性比较PID0中。例如设置PID0的条目RQPROP0x0000FFFFCMP00总是匹配则后续比较TCP端口号时只会比较低16位高16位被屏蔽。这是一个非常强大的功能可以避免为每个规则重复定义掩码。当PID0时CMP位仅用于控制本条规则是强制匹配(00/01)还是强制失败(10/11)以控制流程。PID 0x1 (FLAGS)RQFPR的每一位代表一个解析器提取的标志位如广播地址(EBC)、VLAN(VLN)、IPv4(IP4)、TCP(TCP)、校验和正确(ICV)、解析错误(PER)等。你可以用这些位进行快速筛选例如匹配所有TCP报文TCP1或所有出错的报文PER1。PID 0x2 (ARB)匹配用户通过RBIFX自定义提取的32位属性。PID 0x3-0x6 (MAC地址)分别匹配目的MAC高24位(DAH)、低24位(DAL)、源MAC高24位(SAH)、低24位(SAL)。注意MAC地址是48位这里分成了两部分。PID 0x7 (ETY)匹配以太网类型。这里有重大坑点手册用了大量篇幅警告PPPoE数据包中的原始以太类型0x8864会被覆盖为PPP协议字段因此无法通过ETY0x8864匹配PPPoE。应使用PID1中的IP4或IP6位来匹配PPPoE会话中的IP数据包。对于巨帧Jumbo FrameETY0x8870解析器会继续解析内部的LLC/SNAP头并将ETY设置为SNAP中的类型。因此无法直接匹配巨帧本身需要用RBIFX提取原始字节。对于VLAN标签(0x8100)和MPLS标签ETY字段会被设置为内层的类型。匹配VLAN可用PID1的VLN位匹配MPLS需用RBIFX。PID 0x8-0xF (网络层及以上)匹配VLAN ID(VID)、优先级(PRI)、IP服务类型(TOS)、L4协议(L4P)、目的/源IP地址(DIA/SIA)、目的/源端口(DPT/SPT)。这涵盖了从L2到L4的常用过滤维度。4.5 过滤器工作流程与规则表示例过滤器对每个数据包的处理可以看作是对这256条规则表的线性扫描支持通过CLE/AND跳转。过程如下数据包进入解析器提取所有属性初始化mask_register 0xFFFFFFFF。从规则表索引0开始依次读取每个条目的PID,CMP,Q,REJ,AND,CLE以及对应的RQPROP值。根据PID获取要比较的属性值如目的IP用当前的mask_register与之进行按位与。根据CMP指定的操作将结果与RQPROP比较。根据比较结果、AND、CLE、REJ位决定下一步动作匹配成功则可能接受/拒绝并结束搜索或进入集群继续匹配匹配失败则可能跳过本条或跳过整个集群。如果扫描完所有规则仍未匹配数据包会进入默认队列通常是Ring 0取决于RCTRL配置。示例将发往192.168.1.100:80的TCP流量导入队列1其他所有TCP流量导入队列2非TCP流量丢弃。假设RCTRL[FSQEN]1使用物理队列。条目0 (PID0): 设置掩码。RQPROP0xFFFFFFFF(不屏蔽任何位)CMP00,AND0,CLE0,REJ0,Q任意。这条总是匹配将mask_register设为全1。条目1 (PID1): 匹配TCP标志。RQPROP中TCP位设为1其他位为0。CMP00(等于)AND1(需要和下一条“与”)CLE0,REJ0,Q任意。匹配TCP包。条目2 (PID0xC): 匹配目的IP。RQPROP0xC0A80164(192.168.1.100)CMP00,AND1,CLE0,REJ0,Q任意。条目3 (PID0xE): 匹配目的端口。RQPROP0x00000050(80),CMP00,AND0,CLE1(集群出口),REJ0,Q1。只有当前面三条TCP AND DIP192.168.1.100 AND DPT80都匹配才会执行此条将包导入队列1并结束搜索。条目4 (PID1): 再次匹配TCP标志。RQPROP中TCP位设为1。CMP00,AND0,CLE0,REJ0,Q2。如果条目1-3的“与”匹配失败即不是发往100:80的TCP但数据包是TCP则会匹配此条导入队列2结束搜索。条目5 (PID1): 匹配非TCP。RQPROP中TCP位设为0。CMP00,AND0,CLE0,REJ1,Q任意。如果连条目4都不匹配即不是TCP包则匹配此条执行拒绝REJ1丢弃该包结束搜索。这个例子展示了如何使用AND实现逻辑“与”以及如何通过规则顺序实现“if-else-if”的逻辑链。5. 缓冲区与描述符管理数据落地的“仓库”过滤和队列管理最终都是为了将数据包放入正确的内存缓冲区。这里涉及到底层的DMA和缓冲区描述符管理。5.1 MRBLR寄存器定义“仓库”单元大小MRBLR指定了每个接收数据缓冲区Rx Buffer的最大长度。关键点值必须是64字节的倍数。这是因为DMA传输和缓存行对齐的要求违反此规定会导致不可预知的行为。它定义了硬件最多会向一个缓冲区写入多少字节。如果帧结束或发生错误实际写入的字节可能少于MRBLR。你必须确保软件分配的每个缓冲区至少有这么长。一个常见的错误是分配了较小的缓冲区但设置了较大的MRBLR导致DMA写入越界破坏内存。这个值需要和MAXFRM最大帧长寄存器协同考虑。MRBLR可以小于MAXFRM此时一个帧需要多个缓冲区BD中的L标志位指示连续。通常为了效率会将MRBLR设置为一个适中的值如1536或2048以容纳绝大多数标准帧。5.2 RBDBPH与RBPTRn定位“仓库”地址这是eTSEC内存访问寻址的精妙设计旨在节省描述符空间。RBDBPH提供了所有接收数据缓冲区公共的高4位地址。这意味着所有接收缓冲区必须位于一个4GB对齐的、连续的4GB地址空间内。例如如果RBDBPH 0x8那么所有缓冲区的地址都必须在0x8000_0000到0x8FFF_FFFF之间。这允许在缓冲区描述符RxBD的Data Buffer Pointer字段中只存储低32位地址节省了每个描述符4个字节。RBPTR0-RBPTR7每个接收队列都有一个RBPTRn寄存器它指向该队列描述符环RxBD Ring中当前正在使用或下一个将要使用的缓冲区描述符BD的低32位地址。高4位来自RBASEH另一个寄存器指向描述符环本身的高位地址。当软件初始化队列时将描述符环的基地址写入RBASEn硬件会自动将RBPTRn同步到该值。在接收过程中硬件每关闭处理完一个BD就会将RBPTRn的值增加8因为一个BD是8字节指向环中的下一个BD。关键操作与陷阱初始化顺序必须先配置RBDBPH和RBASEn然后再使能接收功能DMACTRL相关位。顺序错误可能导致DMA访问错误地址。内存对齐接收数据缓冲区建议做64字节或缓存行对齐以提升DMA和后续CPU访问的性能。描述符环本身也建议做缓存行对齐。修改RBPTRn手册明确警告在eTSEC正在主动接收帧时软件绝不能写入RBPTRn。这会导致DMA指针错乱数据写入错误的内存区域。安全的修改时机是在接收器被禁用后或者在发出“优雅停止接收”命令且当前帧接收完成之后。通常驱动会在中断处理程序中在回收并重置了一批已使用的BD后更新硬件指针但并非直接写RBPTRn而是通过某种机制通知硬件新的环首位置具体取决于驱动模型。6. 实战配置流程与常见问题排查6.1 多队列接收与过滤配置流程假设我们要配置两个队列队列0接收所有ARP和ICMP包高优先级及时中断队列1接收所有其他IPv4 TCP/UDP流量低优先级中断聚合。内存与描述符准备在RBDBPH定义的4GB空间内为队列0和队列1分别分配足够多的接收缓冲区每个大小由MRBLR定义如2048字节和BD环。初始化BD环将每个BD的Data Buffer Pointer指向对应的缓冲区低32位E空标志置1队列0的BDI位置1队列1的BDI位置0计划用轮询或聚合中断。将两个BD环的基地址低32位分别写入RBASE0和RBASE1。寄存器初始化设置MRBLR为20480x800注意是64倍数。设置RQUEUEEN01,EN11启用两个队列。EX01ARP/ICMP需要快速处理EX10。设置RXICICEN1,ICCS1系统时钟ICFT16,ICTT5000约0.5ms取决于时钟频率。仅为队列1服务。配置RBIFX本例不需要自定义提取可跳过。配置过滤器规则表通过RQFAR、RQFCR、RQFPR编写规则。条目0 (PID0)设置全掩码0xFFFFFFFF。条目1 (PID1)匹配ETY0x0806(ARP)。CMP00,AND0,REJ0,Q0。条目2 (PID1)匹配IP41且L4P0x01(ICMP)。需要AND和CLE组合实现。先写一条PID1匹配IP41AND1再写一条PID0xB匹配L4P0x01AND0,CLE1,Q0。条目3 (PID1)匹配IP41。CMP00,AND0,REJ0,Q1。这是兜底规则匹配所有其他IPv4包条目4 (PID1)匹配所有可设置一个总是匹配的规则如PID0且CMP00REJ1。丢弃所有不匹配上述规则的包如IPv6、非IP包。启动接收检查RSTAT确保没有QHLT标志。设置DMACTRL相关位启动接收DMA。6.2 常见问题与排查技巧队列不接收数据但链路已通检查RQUEUE[ENn]是否已使能目标队列检查RSTAT[QHLTn]队列是否被硬件暂停如果是排查缓冲区是否耗尽、内存访问是否有错误然后写1清除QHLT。检查过滤器规则数据包是否被默认规则丢弃可以在最后加一条全匹配导向监控队列的规则来调试。检查BD环BD的E空位是否为1硬件需要可用的空BD才能接收数据。中断不产生或过于频繁中断不产生检查RXIC[ICEN]是否开启检查BD的I位是否置1检查IMASK寄存器是否屏蔽了接收中断中断过于频繁检查RXIC[ICFT]和ICTT是否设置合理如果ICFT1则退化为每个包一个中断。检查是否为所有队列都开启了中断聚合可能某个高优先级队列的BDI位常开。数据包被错误地分类到非预期队列仔细核对过滤器规则表规则顺序至关重要。过滤器是顺序执行的一旦匹配即终止。确保你的目标规则排在更通用的规则前面。检查PID和RQPROP值特别是MAC地址、IP地址的字节序eTSEC通常是大端序以及端口号的值。使用PID0的掩码规则确认你是否无意中设置了掩码屏蔽了关键比特。可以在规则表开头加一条PID0,RQPROP0xFFFFFFFF的规则来重置掩码。性能不佳调整MRBLR太小会导致一个帧需要多个BD增加处理开销太大会浪费内存。根据网络MTU设置。优化中断聚合参数在高流量下增加ICFT在低流量下保证ICTT不要太大平衡延迟和吞吐量。利用EX提取位对需要CPU频繁访问的队列开启缓存提取。考虑虚拟队列如果8个物理队列不够且FSQEN0利用虚拟队列在软件层面做更细粒度的分类。关于PPPoE、VLAN、巨帧过滤失败牢记手册的警告不要直接用ETY去匹配0x8864(PPPoE)、0x8870(Jumbo)或0x8100(VLAN)。对于PPPoE用PID1的IP4/IP6位对于VLAN用PID1的VLN位对于巨帧或MPLS必须使用RBIFX提取原始字节进行匹配。调试这类硬件过滤功能最有效的方法往往是“二分法”和“对比法”先配置一条最简单的、匹配所有报文并导入一个队列的规则确保基础通路正常。然后逐步增加规则复杂性每加一条就测试一次。同时可以利用一个“监控队列”接收所有未能被前面规则匹配的“漏网之鱼”这对于验证规则表的完备性非常有帮助。eTSEC的队列与过滤机制是一个需要精细调校的系统一旦配置得当它能极大提升网络子系统的确定性和效率。