一. MAC FCF描述
1. FCF描述
帧过滤需要结合MAC层MHR中的FCF域来进行控制,FCF的描述如下:
二.帧过滤所使用的寄存器和RAM:
- FRMFILT0
- FRMFILT1
- PAN_ID
- SHORT_ADDR
- EXT_ADDR
PAN_ID, SHORT_ADDR和EXT_ADDR的值在RAM中。这里根据IEEE 802.15.4-2006规范,设它们的加载变量分别为:
macPANId,macShortAddress和aExtendedAddress。
macPANId和
macShortAddress为MAC PIB attributes,
而
aExtendedAddress则为MAC sublayer constants。
FRMFILT0 (0x6180) – Frame Filtering
注意上电复位后,帧过滤是使能的。如果不使用帧过滤,则无线电初始化时,必须重置清除该位。
FRMFILT1 (0x6181) – Frame Filtering
三.帧过滤算法:
IEEE 802.15.4-2006中定义了三级过滤:
对于第一级过滤,MAC子层应丢弃所有接收到的FCS不正确的帧。
接收器应重新计算MHR和MAC Payload的帧校验值,然后将此值
与接收帧中的FCS字段相比较,如果相同,则通过一级过滤,否则,不通过。
二级帧过滤取决于参数macPromiscuousMode(MAC PIB attribute,见IEEE 802.15.4-2006文档P165)值的设定:
如果该值为TRUE,那么将接受所有通过一级过滤的帧;如果为FALSE,则要满足下面的三级过滤:
- 帧版本不能是保留值
- 如果帧中包含目的PAND ID,那么它必须匹配macPANId,或其值为广播PAND ID(0xFFFF)
- 如果帧中包含短目的地址,它必须匹配macShortAddress,或其值为广播地址(0xFFFF)。
否则,如果帧中包含扩展地址,它就必须匹配aExtendedAddress - 如果是信标帧,源PAND ID必须匹配macPANId。或macPANId的值为0xFFFF,此时,信标帧应被接受,而不管源PAND ID。
- 在数据帧或命令帧中,如果仅仅只包含源地址,只有该设备为PAN 协调器且源PAND ID 匹配macPANId时才被接受。
在CC2530文档中,对三级过滤重新整理如下:
当使能帧过滤时(FRMFILT0.FRM_FILTER_EN被置位),无线电只接受符合以下全部要求的帧:
1.必须大于等于最小帧长度(不小于)
2.FCF[9:7] & FRMFILT0.FCF_RESERVED_BITMASK必须为0。FCF[9:7]为FCF中的保留位。
3.不能大于当前版本号。当前版本号在
FRMFILT0.MAX_FRAME_VERSION中定义。
4.
FCF中的
源地址和目的地址模式不能是保留值,即不能是0b01,见上面FCF中各位域的描述。
5.目的地址的规定(目的地址--如果有,那么必须匹配,或为广播地址):
如果帧中包含PIN ID,那么必须匹配macPANId。广播帧的PIN ID必须为0xFFFF.
如果帧中包含目标短地址,那么必须匹配macShortAddress。广播帧的
目标短地址
必须为0xFFFF.
如果帧中包含
目标扩展地址
,那么必须匹配aExtendedAddress。
即规范的内容包括:
- 帧长度
- 版本号
- 地址模式不能是保留值
- FCF[9:7] & FRMFILT0.FCF_RESERVED_BITMASK必须为0
- 必须匹配的源、目的地址
注意,帧过滤算法中,除去下面的信标帧,和数据、命令帧不包含目的地址时,并无对源地址必须存在有硬性的规定。
只有对匹配的硬性规定(其实这才是过滤的真正含义所在)。
源地址和目的地址是否存在取决于FCF中源地址模式和目的地址模式的设定值。
而源PAN ID和目的PAN ID是否存在取决于FCF中
PAN ID Compression的设定值。
另外,帧过滤是针对接收方来说的。
另外,源地址模式是可以为0,即不存在源地址和源PAN ID。这时,参照源地址匹配一节中,有:
A 7-bit value called SRCRESINDEX:
– When no source address is present in the received frame, or there is no match on the received
source address:
• Bits 6:0: 011 1111
可见,有对源地址不存在的检查。
四.针对不同帧类型的过滤算法:
启用帧过滤后,所有帧除了必须满足上面的帧算法全部条件外,针对不同的帧,还有一些详细的过滤算法。
1.信标帧
- FRMFILT1.ACCEPT_FT0_BEACON 设置为1
- 帧长度 >= 9
- 目的地址模式为模式0,即无目的PAN标识和地址,参见上面的的FCF说明。
- 源的地址模式为模式为模式2(0b10)或模式3(0b11),即源地址为16位短地址或64位扩展地址。参见上面的的FCF说明。
- 源地址PAN ID必须匹配macPANId, 或者macPANId为0xFFFF(广播地址).
2.数据帧
- FRMFILT1.ACCEPT_FT1_DATA设置为1
- 帧长度 >= 9
- 必须包含源地址和(或)目的地址。如果没有目的地址,FRMFILT0.PAN_COORDINATOR必须被置位(即协调器标识),
且源PAN ID必须等于macPANId。
3.应答帧
- FRMFILT1.ACCEPT_FT2_ACK设置为1
- 帧长度 = 5
4.命令帧
- FRMFILT1.ACCEPT_FT3_MAC_CMD设置为1
- 帧长度 >= 9
- 必须包含源地址和(或)目的地址。如果没有目的地址,FRMFILT0.PAN_COORDINATOR必须被置位(即协调器标识),
且源PAN ID必须等于macPANId。 - 注意对是否包含源PAN ID,取决于FCF中PAN ID Compression的设定。
5.保留帧(Reserved frame types (4, 5, 6, and 7) are only accepted when)
- FRMFILT1.ACCEPT_FT4TO7_RESERVED 设置为1
- 帧长度 >= 9