学习笔记:RPL协议介绍

(来源:notes of course Advanced IT Network.Exercise session )


050_001.jpg

在课程开始之前,先来介绍物联网的概念:

IoT(Internet of Things):把物件连接在一起的网络,也就是物联网。这个网络通常是个本地的网,那些个物件通常也是智慧物件,参考米家全家桶。

050_002.jpg

有了物联网之后,就可以把这些个物件连接在一起,使得他们能够根据环境的变化作出相应的操作,比如天亮了拉窗帘,温度低了开空调,这样形成的网络就叫做Wireless sensor and actuator networks (WSAN)。

想法非常好,现实很残酷。当我们把WSAN构想出来之后,几个很实际的问题就出现在了眼前:

  • 这些个物件肯定要定期充电的,每次充电之后再连接太麻烦了(我咋想到了垃圾的森海塞尔蓝牙耳机)
  • 物件一直在挪动位置,位置不同,收到的无线信号不同,由于解析无线信号导致的耗电量也不同,需要一个省电的方案
  • 这些个物件虽然是智能的,但是跟电脑比也是傻瓜一个,万一有黑客攻击,这些物件第一个被攻破,所以需要一个更安全的方案

针对于上面的问题,定义出来一个这样的网络,Low Power and Lossy Network(低功耗且靠不住的网络),缩写为LLNs。

于是,一个新的协议protocol需求就被提出来了,产品经理们搞出来了一个专门针对于这样需求的协议:

RPL(Routing Protocol for Low Power and Lossy Networks):

**首先呢,先解决安全的问题,**就先定义一个node(节点)作为整个网络的跟(root),只负责接收包,不会有向外的(outgoing)连接(link)。

之后呢,要建立一个网络。

在之前的笔记中有提到过:网络有两种,一种是隔壁和隔壁互相问距离,另一种是每个人都吼一句自己的距离,大家自己生成一张表格,根据算法算出最短距离。

小孩子才做选择,RPL全都要。

下面介绍一些RPL建立连接的过程:

可以简单理解为,创业办公司的过程:

首先,必须要有一个发起人A,起个名字叫Root Node。

050_003.png

它认识周围的B、C、D、E四个人,想要拉他们入伙,因为怕BCDE走过来太远累死,Root估算了一下每个人到它的距离X,并朝每个人吼了一句:“嘿,你来我这X米,你要不要到我这来入伙!”,翻译成鸟语”DIO! X”。

050_004.png

每个人都听到了消息,于是回复他,“到!”,翻译成鸟语,“DAO!”。

050_005.png

Root听到之后非常开心,于是分别告诉他们,“OK,我知道了”,翻译成鸟语,“ACK!”

050_006.png

现在又遇到了一个问题,大家都在公司里了,谁官大,谁是谁的下属呢?

ROOT作为大老板,就不管这些事了,他只是制定了个规定,谁离我近谁官大!

于是BDEC看了一眼距离,发现BC最近,于是BC变成了仅次于A的官。(rank1)

050_007.jpg

B、C就在原地开了自己的公司,各自又想要拉D、E入伙(传销的感觉就来了)

所以上面的流程又走一遍,就可以确定D、E的归属了

050_008.png050_009.png050_010.png

最终,就得到了这样的网络图:

值得注意的是,当父节点都到DAO信息之后,会继续向父节点的父节点发送DAO以更新routing table。

050_011.jpg

于是,现在又出现了一个新问题:

有一个新人X,想加入这个网络该怎么办呢?

于是这个新人对每个人都说一句“嘤嘤嘤,你们刚才说的DIO我都没听到,你们能不能再对我说一下DIO?“,翻译成鸟语,”DIS“。

于是每个人都把之前的DIO对X说了一下。

X就继续对DIO距离最短的人说DAO,然后那个人说”ACK“,最后就建立了连接。

050_012.jpg

值得注意的是,当有人发出DIO声音的时候,实际上每个人都能听得到,但是他们会看一下自己的rank,排名靠前(rank值小)的人不会理会排名靠后(rank值大)的人的DIO声音。

因此,根据rank值,就会排列成一个等级森严的网络,rank低的人永远不会再认rank高的人作为上级,rank值相同的人也不会成为上级,这样也就杜绝了循环(loop)的出现。


学习笔记:RPL协议介绍
https://yiyuwang.be/2020/12/30/2020-12-30-340674234/
作者
StevenWong
发布于
2020年12月30日
许可协议