技术 | RZT2M/N2L ETHSW Pattern Matcher模块功能说明和举例

来源: 瑞萨嵌入式小百科 作者:Cai Hao 2025-05-29 13:22:00

在实际应用中,工业网络设备可能会面对复杂的网络数据环境,比如复杂物理拓扑结构(网络中大量使用路由器/交换机,并且可能有外部设备接入),可能导致网络中出现大量的IP广播/多播,非目标IP包,这些包大量出现,就有可能把真正携带有效通信数据的包“淹没”掉。为了解决这些风险,T2M/N2L平台内置的ETHSW模块提供了广播/多播风暴抑制,数据帧过滤等硬件功能。

  
本文主要介绍用于数据帧过滤的“模式匹配 (Pattern Matcher)”功能,并举例T2M/N2L ETHSW模块提供的Receive Pattern Matcher功能,可以用来和PORT接收到的Frame的特定字段对比,在normal forwarding processing的基础上执行一些预定义的特定动作:如Discard, MGMTFWD,Force_Forward,从而在ETHSW的PORT端完成对特定数据帧的识别,减少通过ETHSW Management Port进入GMAC/CPU处理的数据帧数量,从而降低GMAC数据传输负载和CPU处理IP协议栈的软件负载,降低“丢帧”发生的风险;

 

ETHSW总共12个Pattern Matcher可用。

  
Pattern Matcher支持固定匹配模式和2字节匹配模式;最多可匹配到从数据帧源MAC地址字段之后最多偏移256字节处。

 

Pattern Matcher可以与集成的hub模块结合使用。允许实现当一个特定的帧被接收时,触发MAC传输。这允许在实现像Powerlink这样的协议时,节点设备被触发传输,是通过接收来自中央主节点的特定帧来控制的。

  
Pattern Matcher的4种模式:

MODE 1固定模式

固定比对Frame的SRC MAC地址域后开始的12字节,(第13th-24th字节)因为该范围包含了Type_Length字段(2字节),所以最多比对10 Bytes负载内容;

  
通过PTRN_CMP寄存器和PTRN_MSK寄存器配置数据帧中参与对比的每个字节的比较值和掩码,运行时根据掩码对Frame中相应字节作AND运算,对比PTRN_CMP中的比较值,相同即为Match,然后预定义的Action操作被触发。

  

MODE 2-4:flexible模式

Mode 2-4都是2字节比较,比较的具体方法描述如下,比较位置(offset值:0-256)从13 th byte开始计算偏移;

  • MODE 2:2 byte table look-up:Frame中Offset位置开始的2字节,和最多8个比较值作比较;
  • MODE 3:2 byte range compare with minimum and maximum range:Frame中Offset位置开始的2字节,判断其是否在预设的最小值(min)和最大值(max)范围内;Compare Match规则为:Min <= 2 byte Value <= Max
  • MODE 4:2 byte inverted 2-byte inverted range compare by using a minimum and maximum range:Frame中Offset位置开始的2字节,反向比较 ,Compare Match规则为:2byte value <= Min or  2 byte value >= Max;

Mode 2/3/4下比较值和寄存器配置的对应关系:

举例:

在我们的PN例程中,为了解决测试和实际应用时,网络中出现ARP风暴,导致DCP连接出现故障的问题,因为ARP.request本身是广播帧,用广播风暴抑制不太合适(可能会把真正需要答复的ARP.request屏蔽掉),所以用Pattern Matcher 提取针对该Station IP地址的ARP.request;

  
实现该功能使用2个Pattern Matcher(编号0xa和 0xb),工作在Mode 3(2 byte range compare)下,对比ARP.request帧中的Target IP Address 域,每个Pattern Matcher对比2字节IP地址;

  
UM中MODE 3的意义为:

2-byte range compare by using a minimum and maximum range,at a programmable offset, with port and queue mask for frame triggering and optional Length/Type matching.

  
从Offset指定的位置,Frame中的2字节,如果这两字节的值落在定义的Min和Max值之间,则认为匹配成功;

 

Max/Min配置值与寄存器配置对应关系如下:

代码如下:

  
这段代码可以看到:

action=MGMTFWD | MODE_2BYTE_RANGE | VLAN_SKIP | LEARNING_DIS | SWAP_BYTES | MATCH_LT | SET_PRIO;

  
其中比较重要的配置有:

MGMTFWD:定义为Compare Match的帧,提取到Management Port(ETHSW PORT 3),不再转发;

MODE_2BYTE_RANGE:定义Pattern Matcher 工作在MODE 3;

MATCH_LT:定义除了比较2 byte数据,还需要同时比较Length_Type域,该示例中为0x0806;

  • max_min:分别定义IP地址的高低2字节需要匹配的值,按照上面的对照表,写入到PTRN_CMP寄存器中;
  • offset:定义需要比较的2字节从数据帧MAC地址域后开始的位置;Target IP Address域的高低2字节的offset分别为26和28;
  • port_mask:表示在哪些PORT口上实施该Pattern Matcher;示例中port_mask = 3,即在3个PORT口上都实施;

函数ethsw_setup_mqprio_pattern_add()配置Pattern Matcher相关寄存器;这里不作详细说明,请参考UM(Section 28.3.15)和Source Code;

  
以上简单说明了ETHSW提供的Pattern Matcher的基本功能。T2M/N2L平台的ETHSW是功能强大的交换机,实现了较多Lay2级别的交换功能,后续文档会继续介绍如TDMA/HUB等亮点功能,敬请期待。

0
收藏
0