上回说到哪儿,其实我早就忘了,所以这回完全是重新说,这次的方案是完全可行的,因为我已经调试完成。但是自己测试力度感觉不够深,所以可能还留有bug。代码我会整理上传到github,欢迎大家一起探讨。闲话少说。

    拓扑有很多种,比如链式、星形、环形、环交环、环切环。其中环是应该避免出现,为什么呢?

    1)数据帧在环形拓扑中一直转发,增加带宽、cpu的负担,借用网络术语——广播风暴。

    2)和1)类似,数据帧会被重复转发,设备就会重复执行,设备就会进入非正常的状态。

    3)容易导致拓扑表中ID一直处于变化,不稳定。

    所以说白了就是如何,如何向各式各样的拓扑简化成一个链式的。

一、邻居协议

    每台设备都会采集和自己直连的设备,形成一个邻居表,表里记录的信息主要包括,与设备端口相对应的邻居设备端口与ID。

二、拓扑协议

    待到邻居协议完成后,设备开始建立拓扑表。

    设备首先会根据自己的邻居表,将邻居表中的设备都添加到拓扑表中;

    然后按照邻居表依次查询相应的邻居设备,即发送查询帧;

    邻居设备收到查询帧后,会将自己邻居表反馈回去;

    设备收到邻居表后,查询接收到的邻居表中,是否有新设备(即未添加在拓扑表中的设备),如果有则添加,否则忽略。

    以此类推,直到网络上所有设备都添加到拓扑表中;此时任何形状的网络都会变成一个链式的拓扑。相对来说这种思路比较简单,实现也容易,可以推广使用。

 

    在物联网中应该有用武之地,现在智能家居已经从理论应用到实际之中,看看漫天的新闻,不难想象以后您家里的一个灯泡一个开关,都会被链接到网络之中,而且功能肯定会有很大的提升,比如灯泡的颜色控制,亮度控制,定时,声控还是光空等等,家里的任何一样东西的功能都被发挥到了极致。他们之间如何进行互联,如何进行控制,上午提到邻居拓扑发现协议是一个比较不错的选择。

    完全可以把家里的整个拓扑映射到网络中,每个家庭以拓扑表为模型,推而广之,家庭与家庭之间有形成一种拓扑关系,最终整个世界其实就是一个超级拓扑表。越扯越远了。

  欢迎探讨xq-310@163.com  

 

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐