论文部分内容阅读
据统计,当前网络中有约20亿节点,而专家预计在2020年节点数将剧烈增长至70亿,这将会给当前的DNS(Domain Name System)带来灾难性的影响:首先,节点的剧烈膨胀会对DNS处理能力带来巨大的压力;其次,大量的请求会对DNS安全带来问题;而短时间内DNS的处理能力无法大幅提升,对DNS架构的设计、优化也需要一个漫长的过程。另一方面,受限网络中节点之间是典型的M2M通信,这种通信的一大特点是无人工干预、资源发现自动化,这个要求也是当前DNS系统所不能满足的,所以受限网络需要一种新的资源发现机制。本文在参考IETF有关资源发现相关草案的基础上,提出了一个受限网络中的资源发现的可行方案—资源目录服务器。同时,本文还借助资源目录服务器解决了受限网络中睡眠节点的通信问题。首先,本文以受限网络为背景,深入分析受限场景下资源发现机制与传统互联网中资源发现机制的不同;同时参考OMA有关受限网络的资料和IETF CoRE工作组有关受限网络下资源发现机制的草案,对受限网络中的资源发现机制进行了详细的需求分析,在以上工作的基础上对系统进行了概要设计。本文将资源目录服务器分为CoAP协议支持模块、资源发现模块、睡眠节点的通信支持模块三部分。其中CoAP协议支持模块实现了 CoAP协议下的基本通信功能,保证了资源目录服务器与受限节点的交互;资源发现模块实现了受限网络中资源的发现机制;而睡眠节点的通信支持模块解决了其他客户端无法获取睡眠中节点的资源的问题。其次,本文对系统的各个模块进行了详细的设计与实现。CoAP协议支持模块定义了系统使用到的大部分的数据结构、封装了一些报文处理函数、同时负责对CoAP报文交互过程中可靠传输、拥塞控制以及请求响应的匹配和请求报文的处理。资源发现模块定义并实现了资源目录服务器的发现模块、资源注册模块、资源更新模块、资源删除模块以及资源查询模块,实现了受限网络中资源的自主发现。在睡眠节点的通信支持模块,本文首先将受限节点上的资源分为可代理资源和不可代理资源。针对可代理资源,模块采用将资源代理到资源目录服务器上客户端直接通过资源目录服务器来获取资源的方法来解决无法直接从睡眠节点上获取资源的问题;针对不可代理资源,模块先对资源目录服务器硬件资源进行分析,如果硬件资源充足则会缓存下请求并等CoAP Server唤醒时将请求转发给它,当CoAP Server资源不足的情况下,会根据请求或响应的不同,做具体的处理。为了更高效的缓存请求和响应,本模块还实现了一个更适合受限场景的基于节点平均等待时间缓存置换算法。最后,本文在Linux下对系统进行部署测试。首先验证了资源发现方案在受限网络下的正确性和可行性并根据测试数据对系统做了部分优化。其次本文对睡眠节点的通信问题在使用该解决方案前和使用后的数据进行了统计比较,同时对实验结果数据进行了分析。