IEEE 802.15.4
内容分为两部分,分别是其他和计算
| 角色 | Coordinator(协调器) | Router(路由器) | End Device(终端设备) |
|---|---|---|---|
| 功能 | 负责网络的初始化和管理,分配地址,维护路由表 | 转发数据包,扩展网络覆盖范围,参与路由功能 | 仅负责与父节点通信,不参与路由功能 |
| 通信能力 | 能与所有设备通信 | 能与协调器、其他路由器及终端通信 | 只能与父节点通信 |
| 电源需求 | 通常需要持续供电 | 需要持续供电 | 支持低功耗模式,适合电池供电 |
| 角色数量 | 网络中仅有一个 | 网络中可以有多个 | 网络中可以有多个 |
| 应用场景 | 网络的中心节点 | 用于扩展网络覆盖范围 | 低功耗传感器、终端设备 |
![[Pasted image 20250107171022.png]]
长地址64位,短地址16位
2.4G数据速率为250kbps
![[Pasted image 20250107171212.png]]
信标使能与非信标使能见ppt
![[Pasted image 20250108124615.png]]
![[Pasted image 20250108124624.png]]
![[Pasted image 20250107221650.png]]
![[Pasted image 20250107221657.png]]
![[Pasted image 20250108132318.png]]
![[Pasted image 20250108132323.png]]
![[Pasted image 20250108151747.png]]
AODV只考概念
AODV(按需距离矢量路由协议)是一种用于无线自组织网络(Ad hoc Network)的路由协议。它以按需方式发现路由,避免了传统路由协议中频繁广播路由表的问题,从而提高了网络的效率。
工作原理
- 路由请求(Route Request, RREQ):
- 当源节点需要向目标节点发送数据包时,它会广播一个路由请求(RREQ)消息,试图寻找到目标节点的路径。
- RREQ 消息在网络中被邻近节点接收,并向它们的邻居继续广播,直到到达目标节点或找到已知的目标节点路由。
- 为了避免路由环路,RREQ 消息会包含序列号,每个中间节点只响应最新的路由请求。
- 反向路径的建立:
- 当节点转发 RREQ 消息时,会在其路由表中记录一个指向源节点的反向路径。
- 反向路径将用于后续的路由回复(Route Reply, RREP)消息。
- 路由回复(Route Reply, RREP):
- 当目标节点收到 RREQ 或者中间节点有目标节点的路由时,会向源节点发送一个路由回复(RREP)消息。
- RREP 消息沿着 RREQ 消息建立的反向路径返回给源节点。
- 源节点接收到 RREP 后,可以开始传输数据。
- 对称链路假设:
- AODV 假设网络中所有链路是双向的(对称链路),即任何节点之间的通信是可双向传输的。
- 动态路由维护:
- 如果网络拓扑发生变化,例如某条路径断开,AODV 会通过发送错误消息(Route Error, RERR)通知相关节点更新路由。
- 按需路由:仅在需要通信时发现路径,减少了网络的开销。
- 环路自由:通过使用序列号和时间戳避免路由环路。
- 动态自适应:能够根据网络拓扑的变化动态调整路由。
![[Pasted image 20250107172135.png]]
信标使能模式CSMA/CA有时隙,非信标使能无时隙
CCA:用于检测信道是否空闲的过程
![[Pasted image 20250107172433.png]]
- NB:默认1,每次碰撞+1,超过某值说明传输失败
- CW:至少检测的次数,每次检测无碰撞(空闲)后-1,直到CW是0后停止检测,才可以发送数据帧
- BE:分散退避时间
特殊省电模式:
- 竞争仅限于前 6 个时隙
- 退避指数(BE)的范围限制在0~2
流程图解释 信标使能,有时隙
![[Pasted image 20250107173224.png]]
如图:
- 初始化 默认NB=0,CW=2,意味着需要检测两次空闲 检查是否启用 Battery Life Extension,决定退避指数(BE)的范围
- 碰撞检测 先进入退避时间,时间结束后CCA 如果信道忙,退避次数增加(NB),重新退避 如果信道空闲且满足多次检测(CW=0),则进入数据传输 注意,如果检测到信道忙,那么CW将立刻重置也就是必须连续CW次检测到空闲才可以 ![[Pasted image 20250107173441.png]]
非信标使能,无时隙 ![[Pasted image 20250107174558.png|850]]
此时CW是摆设
![[Pasted image 20250107174626.png|850]]
这一章后PPT中的三张图对应三种极端情况,略微解释了为什么需要多次CCA(避免碰撞ACK)
![[Pasted image 20250107221542.png]]
![[Pasted image 20250107221549.png]]
如果仅仅指定了源地址,那么最大数据载荷就是118(127-5-4)
关键计算
其中包括下面几部分:
- 信道访问时间,即传输前的准备时间,由CSMA/CA产生
BE默认为3
InitialbackoffPeriod:退避初始周期aUnitBackoffPeriod:退避单位周期CCA:信道清除评估时间 $$ 最长访问时间=InitialbackoffPeriod+CCA=(2^{BE}-1)aUnitBackoffPeriod+CCA=7(2016)μs+(816)μs=7*320μs+128μs=2.368ms $$ - 有效载荷传输时间,最终要打包成物理帧的格式传输出去,帧头多余部分见物理帧结构
传输速率(2.4GHz):250kbps
aMaxPHYPacketSize= 127B $$ \large 数据帧传输时间= \frac{(aMaxPHYPacketSize+SHR+PHR)8}{25010^3}=\frac{(127+5+1)8}{25010^3}=4.256ms $$ - 确认帧(ACK)传输时间 ACK不使用CSMA/CA $$ \large ACK时间=\frac{(ACK帧字节+SHR+PHR)8}{25010^3}=\frac{(2+1+2+5+1)8}{25010^3}=0.352ms $$
- 从发送模式切换到接收模式的时间
aTurnaroundTime$$ \large aTurnaroundTime=12symbols=0.192ms $$ - 重试时间(可能没有,视情况而定)
未收到ACK时,需要等待
macAckWaitDuration后重试 $$ \large macAckWaitDuration = 54 symbol periods =0.864 ms $$
练习1 ![[Pasted image 20250108124813.png]]
- 非信标使能,说明此时CW无效,只要空闲便可直接发送
- 算法始终检测空闲,说明一次CSMA/CA即可
- 需要ACK
- 无重试
- 最大数据帧有效载是114B
注:这里说的114B指的是MAC帧中(数据帧就是MAC帧的一种)有114B的有效载荷,而MAC帧,也就是
PHY Payload的总大小默认取最大,也就是127B
此题情况与上文介绍公式的例题完全一致 ![[Pasted image 20250108130025.png]]
有效数据传输速率为: $$ \large 吞吐率=\frac{有效数据大小}{发送数据耗时}=\frac{1148}{7.16810^{-3}}=127232bps≈127kbps $$
练习2 ![[Pasted image 20250109144618.png]]
其中有25%的数据需要重传,且重传一次即可
如果有重传,则发送的耗时过程为:
CSMA/CA -> 数据帧发送 -> 等待ACK失败-> CSMA/CA -> 数据帧发送 -> 发送转为接收 -> ACK发送 重发前没有转换的时间,因为该时间包括在等待ACK的超时时间内了
总时间为: ![[Pasted image 20250108131052.png]]
14.656ms
根据上面的题,无重传的发送时间为$\displaystyle 7.168ms$ 因此,75%的数据需要$\displaystyle 7.168ms$,25%的数据需要$\displaystyle 14.656ms$
则平均数据帧传输时间:
$$
\large 7.1680.75+14.6560.25=9.04ms
$$
假设有效载荷与上面一样,为114B,则: $$ \large 吞吐率=\frac{1148}{9.0410^{-3}}=100884bps≈101kbps $$ 如果问传输1MB的数据要多长时间,则为: $$ \large \frac{110241024}{114}*9.04=83150ms=83s=1min23s $$
树状网络,网络中分为路由节点与终端节点,还有一个协调器节点(祖宗) ![[Pasted image 20250108132358.png]]
其中三个重要参数:
-
$\displaystyle \huge l_{m}$ :树状网络的总深度,即从协调器节点(Depth=0)到网络中最远的节点之间的跳数 -
$\displaystyle \huge C_{m}$ :每个路由节点的最大子节点数量 -
$\displaystyle \huge R_{m}$ :每个路由节点的最大子路由节点数量
计算方法,最简单是使用Cskip(d),本质上是计算两兄弟节点之间的序号差
![[Pasted image 20250109150554.png]]
子节点的地址是根据父节点情况计算出来的
子路由节点与子终端节点的分配情况为:
假设深度为d的节点是父节点,该节点地址为$\displaystyle \large A_{parent}$,那么:
$$
\huge 该节点的第n个子路由节点地址=A_{parent}+(n-1)*C_{skip}(d)+1
$$
$$
\huge 该节点的第n个子终端节点地址=A_{parent}+R_{m}*C_{skip}(d)+n
$$
考试时,这里的所有公式都会给出,不用背
练习: 协调器地址0x0000,求路由节点7与终端节点11 ![[Pasted image 20250108134113.png|525]]
题中会给一些多余的条件,比如某某节点已经满载 根据条件,先把三大参数写出来
这里 Rm=2,Cm=4,Lm=3
计算Cskip(d)
- Cskip(0)=13
- Cskip(1)=5
- Cskip(2)=1
所有节点都可以根据公式计算
根据序号可以看出来父节点的子节点排行老几
节点1是0节点的第一个路由节点
节点7是节点1的第二个路由节点,节点1深度为d = 1,根据父节点节点1计算子节点节点7
套用公式$\displaystyle \Huge A_{parent}+(n-1)*C_{skip}(d)+1$
节点11是7的第二个终端节点,节点7深度为d = 2,根据父节点节点7计算子节点节点11
套用公式$\displaystyle \Huge A_{parent}+R_{m}*C_{skip}(d)+n$
下图是更多示例 ![[Pasted image 20250108140837.png]]
题目给出树状网络结构,要你求出从A点发送数据到B点的过程路径,即每一跳地址 一般结合上一题目,求地址后再求路由路径
有两种情况,当A是B的长辈的时候,逐级下传即可 当A不是B的长辈,应该传输给父节点,循环过程
![[Pasted image 20250108141419.png]]
公式考试会给出
练习 ![[Pasted image 20250108142007.png]]
每一跳地址都应当由计算得出,不能瞪眼,不然不得分
先算Cskip(d)
- Cskip(0)=31
- Cskip(1)=7
- Cskip(2)=1
计算38 -> 45
瞪眼可知 C -> B -> A -> D -> 45
计算过程:
又因为 $\displaystyle \large A+R_{m}C_{skip}(d)=32+47=60>45$ 因此45不是A的直接子终端设备,却在A的子路由节点范围内,因此下一跳是该子路由节点
$\displaystyle \large A+1+int\left( \frac{45-(A+1)}{C_{skip}(d)} \right)C_{skip}(d)=32+1+int\left( \frac{45-(32+1)}{7} \right)7=33+17=40$ 即下一跳*是地址为40的子路由节点D
由于 $\displaystyle \large D+R_{m}C_{skip}(d)=40+41=44<45$ ,因此目的地址45是D的子终端设备,直接路由即可
总过程与瞪眼法一致
计算38 -> 92
瞪眼可知 C -> B -> A -> O -> Q -> 92
计算过程:
C -> B -> A 与上面相同
由于
$\displaystyle \large O+1+int\left( \frac{92-(O+1)}{C_{skip}(d)} \right)C_{skip}(d)=0+1+int\left( \frac{92-(0+1)}{31} \right)31=1+231=63$ 即下一跳*是地址为63的子路由节点Q
又因为
总过程与瞪眼法一致