CC2530中的帧过滤(兼容IEEE 802.15.4-2006三级帧过滤)

来源:互联网 发布:centos软件包管理器 编辑:程序博客网 时间:2024/06/05 07:37

一. MAC FCF描述
1. FCF描述
帧过滤需要结合MAC层MHR中的FCF域来进行控制,FCF的描述如下:
bit no
名称
描述
0:2
帧类型
Frame Type
  • 0b000  信标帧
  • 0b001  数据帧
  • 0b010  应答帧
  • 0b011  命令帧
  • 其他值预留。
3
安全使能标志
Security Enabled
  • 1表示对该帧使用安全机制,
  • 0表示不使用安全机制。
4
后续帧控制位
Frame Pending
  • 1表示后续还有更多的数据帧要发送给接收设备
  • 0表示没有。
5
应答标志
Ack Request
  • 1表示该帧需要应答
  • 0表示该帧不需要应答
6
PAN标识压缩标识
PAN ID Compression
  • 1表示采取PAN标识压缩模式,表明当前帧是在同一PAN范围内,只需要目的地址与源地址,而不需源PAN标识符;
  • 0表示不采用PAN标识压缩模式,表明当前帧是不在同一PAN范围内,不仅需要目的地址与源地址,源PAN标识符
    与目的PAN标识符均需要。
7-9
保留

10-11
目的地址模式
destination address mode
  • 00表示不存在PAN标识和地址域;
  • 01是预留值;
  • 10表示后面的地址域为16位短地址;
  • 11表示地址域为64位扩展地址。
12-13
帧的版本
Frame Version
  • 0x00表示与2003版本兼容;
  • 0x01表示该帧为2006版本。
14-15
源地址模式
source address mode
  • 00表示不存在PAN标识和地址域;
  • 01是预留值;
  • 10表示后面的地址域为16位短地址;
  • 11表示地址域为64位扩展地址

二.帧过滤所使用的寄存器和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



原创粉丝点击