论文部分内容阅读
随着网络规模的扩大、节点种类的增长以及网络中支持的应用与服务的多样性的提高,网络环境的复杂性迅速增加。网络协议与应用的开发中不得不考虑越来越多应用无关的底层细节,例如Ad Hoc(移动自组织)网络中的高动态性、低可靠性、能量限制以及异质性,互联网巨大的规模,对可靠性与适应性的高要求都需要开发人员处理,使网络中协议与应用的开发变得越来越复杂。缺乏面向网络的能够将应用逻辑与底层细节分离的高层编程抽象逐渐成为了网络系统发展的一大障碍。在各种解决方案中,声明式网络设计方法得到了越来越多的重视。该方法允许用户使用声明式语言以指定“预期输出”而非“如何进行计算”的方式描述网络程序。但是该方法中依赖的面向网络的声明式语言的底层无关性、运行及优化方面还存在各种问题,本文针对对声明式网络语言中存在的这些问题进行了研究,成功的降低了网络协议与应用的开发的难度,提高程序开发的效率。主要成果有:
1.改进了声明式语言的编程方法。目前提出的声明式网络语言能够以简洁的代码描述网络协议,生成的代码尺寸与命令式语言相比降低了两个数量级。但是其声明度仍不理想,仍然存在大量描写与应用逻辑无关的底层细节的代码。为了进一步提高声明式语言的底层无关性,使开发人员能够专注于程序的应用逻辑,我们提出了新的基于改写的声明式语言代码自动完成方法。该方法能够自动生成一些常用的网络事件的代码(例如数据更新与过期、最佳数据的维护与网络消息处理),使声明式网络协议与程序中处理底层细节的代码减少了四分之三以上,进一步提高了语言的声明度。
2.提出了声明式语言的平台无关运行模型。声明式语言使开发人员在网络应用的编写过程中处理的底层细节大大减少,但是目前的声明式语言需要专用的运行系统或是被编译为底层硬件相关的代码,代码在不同平台之间的移植需要耗费大量时间和精力。我们提出了新的声明式语言的基于DBMS的平台无关运行模型,其中Netlog程序在执行前被编译为通用的SQL语言语句,DBMS通过执行相应的SQL语句执行Netlog程序,允许Netlog程序在任何能够部署DBMS的平台上运行。我们对该模型在多种不同平台上进行的实现显示了该平台具有很高的可移植性以及较好的性能。
3.提出了扩展半质朴优化方法。目前使用的网络声明式语言的运算过程中存在大量的冗余,而且由于网络声明式语言与传统声明式语言使用场景及语义上的区别,传统的优化方法无法使用。因此我们提出了新的声明式语言优化的扩展半质朴方法以进一步优化执行效率。该方法继承了半质朴方法的思想,避免了声明式语言递归运算中在相同数据上的重复计算,大幅提高了声明式语言的运算效率。并且我们证明了该方法的正确性。
4.提出了声明式网络程序模拟的模型由于实际网络中的实验受到各种因素限制,网络模拟器在网络协议和应用的开发与调试中得到广泛应用,并且节约了大量的时间与金钱,已经成为了网络程序设计过程中不可或缺的重要工具。而传统的重视网络底层参数测试的网络模拟器无法适应面向应用逻辑的声明式网络程序的调试。我们提出了声明式网络程序的网络模拟模型。该模型首先将声明式网络程序以数据为中心的思想和了统一的关系数据模型两个特点纳入了网络模拟模型中。基于该模型的着色方法能够在程序运行中即时以图形方式显示节点中拓扑相关的数据,使测试人员免于自行编写代码收集以及分析数据的困扰,为声明式网络程序的调试提供了全新的视角。
最后我们实现了Netquest虚拟机以及QuestMonitor模拟器对以上提出的各种方法进行了实验验证。