1、AD-HOC自组网路由协议介绍 AD-HAD-HOC自组网路由协议介绍 路由协议介绍 AD-HOC自组网路由协议介绍 2016.12.12 内容 Ad-hoc网络简介 ZigBee简介 传统路由算法 Ad-hoc路由 vs. 传统路由 AODV:按需距离向量路由协议 OLSR:优化的链路状态路由协议 Performance: AODV vs OLSR Ad hoc: 拉丁语,意为“ for this purpose only” ,也即是某种特殊用途的网络。 核心要点:不依赖于已有的基础架构,比如 wifi AP或者基站,由通信实体自己组网通信 应用场景 军事,比如一个小分队偏远地区 /无人区
2、 /敌区实施任务 救灾,通信基础设施被破坏,营救团队之间的通信 传感器网络,没有通信基础设施 智慧家庭 Core Network AD-HOC网络简介( 1) - 为啥需要 AD-HOC 3 Backhaul Network BSC MSC BTS AD-HOC网络简介( 2) - 标准化情况 Wifi MESH over 802.11 (802.11s) 二层的 Ad-Hoc路由 BT MESH ( BT 6.0?),还没有成为标准 Zigbee over 802.15.4 IETF MANET over MAC (802.11, 802.15.4) 重点在路由协议 基于 IP 4 ZIGB
3、EE - 简介 目标:可靠,高性价比,低功耗 ZigBee联盟和 ZigBee协议 Since 2001 最新 3.0标准, 2016 IEEE802.15.4个人局域网 (PAN)无线标准 物理层和链路层标准 ZigBee-PRO NWK 网络层 定义了基本要求。具体路由协议没有定义。 常见路由协议 AODVjr Cluster-Tree: 分级路由,适合静态网络,链路状态路由类型 5 ZIGBEE 网络层节点分类 6 协调器 (ZigBee Coordinator) 每个 ZigBee网络一个 初始化网络信息:网络标识符,信道等 安全认证(集中控制) 也是路由器和终端节点 路由器( Zig
4、Bee Router) 路由数据报文 Always-On 也是终端节点 终端节点 (ZigBee EndPoint) 产生数据报文 接收数据报文 低功耗、电池供电设备 ZIGBEE - 特点 7 低功耗 近距离 高安全 ISM频段 低成本 低速率 高容量 短时延 5号电池 半年 路由协议:终极目标就是构造节点上的路由表 8 传统路由算法( 2) - DISTANCE VECTOR路由算法 代表协议: RIP( Routing Information Protocol), IGRP( Interior Gateway Routing Protocol) 每个(物理)链路的“距离”是重要衡量指标,
5、 DV的一个目标是使得路径的距离最短 一个简单的计算方法是:一个 link,距离就是 1,也可以看成 1跳 DV路由表 核心概念:路由表信息仅通告邻居 9 A C DBDest Next MetB B 1A A 1D D 1Dest Next MetB B 1C C 1Dest Next MetC C 1A A 1Dest Next MetC C 1A C DBDest Next MetB B 1A A 1D D 1Dest Next MetB B 1C C 1D C 2Dest Next MetC C 1A A 1D C 2Dest Next MetC C 1A C 2B C 2传统路由算法
6、( 3) - LINK STATE路由算法 代表协议: OSPF( Open Shortest Path First), ISIS( Intermediate system to intermediate system ) 核心概念 每个节点都对外发布自己的邻接信息 每个节点根据整个网络每个节点的邻接信息构造网图,使用最短路径优先算法计算路由 消息类型 Hello: 邻居发现,仅在链路层发送, TTL=1 Router LSA(Link State Advertisement): 节点邻接消息,在整个域( Area)广播 10 A C DBh e l l oLSDBA-BA-CLSDBA-BB
7、-CLSDBA-BB-CC-DLSDBB-DA C DBLSDBA-BA-CB-CC-DLSDBA-BB-CA-CC-DLSDBA-BB-CC-DLSDBB-DA-CB-CL S A f r o m DL S A f r o m CAD-HOC路由 VS. 传统路由 11 Ad-Hoc路由 传统路由 节点移动性 快速移动 基本静止 信号干扰 强,无线电磁环境复杂 弱,有线噪声容易屏蔽 链路对称性 接收两端接收能力、路径衰减状况等复杂因素 基本是对称链路 节点计算能力 弱,移动设备电源消耗限制 强 轻量级开销 路由快速收敛 AD-HOC 路由简介( 1) 路由计算时机 主动式( Proactiv
8、e)或者表驱动( Table-Driven),维护路由表 被动式( Reactive)或按需( On-demand) ,在需要时决定路由 网络结构 扁平结构 AODV, OLSR 层级结构 比如,可以在一个簇或者域里面采用主动式路由,而在簇头之间采用被动式路由 12 AD-HOC 路由简介( 2) - 路由分类 扁平主动式路由 Link state Fish-Eye Routing, GSR, OLSR Table driven: Destination-Sequenced Distance Vector (DSDV), WRP) 按需被动式路由 Ad hoc On-demand Distan
9、t Vector (AODV) Dynamic Source Routing (DSR) 混合式 Zone Routing ZRP, SHARP (proactive near, reactive long distance) Safari (reactive near, proactive long distance) 13 AODV( 1) Ad Hoc On-demand Distance Vector routing protocol RFC3561, IETF实验性文档 参考 RFC3561 https:/ 14 AODV( 2) - 基本概念 纯的按需路由协议 一个网络节点不会主动
10、发起路由发现或者维护,除非它需要知道某个路由,或者它作为中间节点提供服务 不在有效路径上的节点不维护路由信息,不参与路由表信息交换 使用广播路由发现机制 使用报文每跳路由( hop-by-hop routing) 中间节点维护动态路由表项 本地 HELLO消息:用于决定本地连接 可以减少路由请求的响应时间 在必要时,可以触发更新 路由条目和序列号绑定 解决信息新鲜度问题 每个节点维护两个计数器 节点顺序号 广播 IDAODV( 1) 15 AODV( 3) - 路由请求 当节点 N想和节点 M通信,但是没有到节点 M的路由时,节点 N会发起对 M的路由请求 节点 N广播一个 RREQ(Rout
11、e Request)的报文给它的邻居 顺序号 源顺序号:指明反向路由的新鲜度 宿顺序号:指明正向路由的新鲜度 每个邻居收到 RREQ: 要么使用 RREP返回给节点 N, 要么把 RREQ转发给它的邻居 唯一决定 RREQ 每次发送 RREQ,广播 ID加 1 接收者能够判定和丢弃重复 RREQ 16 AODV( 4) - 路由请求 如果一个节点无法响应 RREQ(也就是无法回送RREP) 把 RREQ的跳数加 1 节点保存相关信息,构造一个反向路径 转发 RREQ的邻居 宿 IP地址 源 IP地址 广播 ID 源节点顺序号 路由老化时间 17 AODV( 5) - 路由请求示例 场景和假设
12、节点 1需要发送数据报文给节点 7 假定节点 6知道一个到 7的路径 假定其他节点都不知道到 7的路径 节点 1发送一个 RREQ给它的邻居 源地址 =1 目的地址 =7 广播 ID=广播 ID+1 源顺序号 =源顺序号 +1 宿顺序号 =上次收到节点 7的宿顺序号 18 14635271463 527RREQAODV( 6) - 路由请求示例 节点 2和 4确认这是一个新的RREQ, 源顺序号是“新”的,刷新到节点 1的反向路由 节点 2和节点 4转发 RREQ 为节点 1更新顺序号 增加 RREQ的跳数 节点 6收到 RREQ 如果 RREQ里面的宿顺序号小于等于节点 6记录的节点 7的顺
13、序号,回送 RREP 节点 3、 5也会转发 RREQ,最终发现是冗余的 19 14635271463527R R E QR R E PAODV( 7) - 路由响应 如果收到 RREQ的节点自己有到宿的路径,或者它本身就是宿,那么它构造单播 RREP,回送给发给它 RREQ的邻居 中间节点使用反向路径回传 RREP,直到源节点 中间节点可能多次收到 RREP 第一个 RREP无条件沿反向路径回传 后续的 RREP丢弃,除非宿顺序号更大,或者宿序列号相同,但是跳数更小 20 AODV( 8) - 路由响应示例 接 slide14 节点 6知道到节点 7的路径,因此构造RREP,发送给节点 4。
14、 RREP内容为: 源地址 =1 宿地址 =7 宿顺序号 =max(自己记录的节点 7的顺序号, RREQ中的宿顺序号) 跳数 =1 节点 4收到 RREP 检查是否是新的 RREP,或者是需要发送的 RREP, 本例中,是新的 RREP,使用反向路由,回送给节点 1 RREP中的跳数加 1 节点 1收到 RREP,计算路由 等路由计算完毕后,想发送的报文才能开始发送 21 1463527R R E PDest Next Hops7 4 3AODV( 9) - 路由维护 路由改变可以通过下面方式侦测到: 收不到 HELLO消息 物理层错误指示 侦测到路由改变的上游节点构造 RERR( Rout
15、e ERRor) 新的宿序列号和无穷大跳数 源(或者路由上的其他节点)可以通过构造新的 RREQ,试图重新构造到宿节点的路由 22 1463527R E R R7 假定节点 7移动,导致 link断开 6发现这个断开,发起 RERR到节点 1,因为它知道节点 1请求过这个路由 节点 1收到 RERR,可以再发起到节点 7的RREQ OLSR( 1) Optimized Link State Routing protocol RFC3626, IETF实验性文档 参考 Rfc3626.txt: https:/ Draft-ietf-manet-olsrv2-03.txt https:/tools
16、.ietf.org/wg/manet/draft-ietf-manet-olsrv2/draft-ietf-manet-olsrv2-03-from-02.wdiff.html 23 OLSR( 2) - 基本概念 主动式(表驱动)路由协议 路由“立刻”提供:使用保持在本地的路由表直接计算 基于链路状态算法 和传统链路状态路由算法不同,不是所有节点广播链路状态 减少协议处理开销的核心技术: 广播节点:只是部分节点可以广播链路状态信息 链路状态信息:部分链路状态 基于 UDP,周期性通告,不需要可靠传输 24 OLSR( 3) - 核心概念 多点中继( MULTIPOINT RELAYS) 网络
17、中的每个节点 N选择一个邻居集合作为多点中继,即 MPR(N),这个集合里面的节点会中继来自节点 N的控制消息(也就是协议消息) If MN 的邻接邻居,但是 M !MPR(N) ,那么 M会处理来自 N的控制消息,但是不做中继 MPR( N)选择规则 If N的两跳邻居集合 MPR ( N)中所有节点的邻接邻居的集合 25 1463527NBR(4)=1,3,5,6 2Hop-NBR(4)=2,7 NBR(3)=2,5 NBR(6)=4,5,7 因为 2Hop-NBR(4) NBR(3) + NBR(6) 所以 MPR(4)=3,6 MPR(N)的集合并不是唯一的 OLSR( 4) - 核心
18、概念 多点中继挑选者集合( MULTIPOINT RELAY SELECTOR SET) 节点 M的网络中继挑选者集合,即 MS(M),是指那些选择 M为 MPR的节点集合 假定 N-M表示节点 N和 M的 link,如果 N MS(M) ,那么 N-M会在 M对外通告的控制消息中包含 26 1463527MPR(4)=3,6 MS(3)=,4, MS(6)=,4, OLSR( 5) - HELLO消息 Hello消息 发现邻接邻居 发现 2跳邻居 构造 MPR/MS Hello消息包含节点的邻接 邻居信息 和 MPR信息 所有节点周期性广播 Hello消息给邻接邻居 Hello消息不被转发
19、27 OLSR( 6) - HELLO消息 在节点 4: 收到 HELLO:NBR(1)=2,4 HELLO:NBR(3)=2,4,5 HELLO:NBR(5)=3,4,6 HELLO:NBR(6)=4,5,7 可以计算得出MPR(4)=3,6 对外发布 HELLO: NBR(4)=1,3,5,6,MPR(4)=3,6 在节点 3: 设置 MS(3) 在节点 6: 设置 MS(6) 28 1463527H E L L O : N B R ( 1 ) = 2 , 4 H E L L O : N B R ( 3 ) = 2 , 4 , 5 H E L L O : N B R ( 5 ) = 3 ,
20、 4 , 6 H E L L O : N B R ( 6 ) = 4 , 5 , 7 1463527H E L L O : N B R ( 4 ) = 1 , 3 , 5 , 6 , M P R ( 4 ) = 3 , 6 M S ( 3 ) = , 4 , M S ( 6 ) = , 4 , OLSR( 7) - TC消息 网络节点使用 TC( Topology Control拓扑控制)消息对外发布拓扑信息 和邻居的链路状态 序列号(用以保证信息新鲜度) 一个节点 N,构造了一个 TC,需要满足下面条件 N是一个 MPR节点,也就是 MS(N)不是空 TC仅包含 N和它的 MS里节点的链路信
21、息 一个网络节点 N处理任何它收到的 TC, TC是计算路径的基础;但是仅当 TC的发送者是属于 MS(N) 也就是只有 MPR节点才会传播 TC消息 29 OLSR( 8) - 路由构造示例 节点 3产生 TC(3)=,并且进行 TTL=1的广播 节点 2、 4、 5收到来自 3的该 TC广播 节点 2、 5内部处理该 TC 节点 4内部处理该 TC;并且因为发送者 3 MS(4),因此中继这个消息到 1、 5、 6 节点 1、 5、 6收到来自 4的这个 TC广播 节点 1内部处理该 TC 节点 5通过比较 TC的序列号,发现重复,直接丢弃 节点 6内部处理该 TC;并且因为发送者 4 MS(6),因此中继这个消息到 5、 7 30 1463527M P R ( 1 ) = 4 M P R ( 2 ) = 3 M P R ( 3 ) = 4 M P R ( 4 ) = 3 , 6 M P R ( 5 ) = 3 , 4 , 6 M P R ( 6 ) = 4 M P R ( 7 ) = 6 M S ( 1 ) = M S ( 2 ) = M S ( 3 ) = 2 , 4 , 5 M S ( 4 ) = 1 , 3 , 5 , 6 M S ( 5 ) = M S ( 6 ) = 4 , 5 , 7 M S ( 7 ) = 1463527T C ( 3 ) = , ,