(计算机科学与技术专业论文)forces体系结构下fe模型及其描述技术的相关研究.pdf_第1页
(计算机科学与技术专业论文)forces体系结构下fe模型及其描述技术的相关研究.pdf_第2页
(计算机科学与技术专业论文)forces体系结构下fe模型及其描述技术的相关研究.pdf_第3页
(计算机科学与技术专业论文)forces体系结构下fe模型及其描述技术的相关研究.pdf_第4页
(计算机科学与技术专业论文)forces体系结构下fe模型及其描述技术的相关研究.pdf_第5页
已阅读5页,还剩74页未读 继续免费阅读

(计算机科学与技术专业论文)forces体系结构下fe模型及其描述技术的相关研究.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嚣防辩学技本大学研究生院学经论文 摘要 在豢一找互联网路邀与交换理论瓣磷究过程中 f o r c e s 粉湖a 矮n g 勰dc 挂o l 嚣l 凇e 蛾s 印a f a 畦o n 体系绪秘撵蠢籍控潮魂麓翻转发功能分亵的憨惩 同靖结合了黧中式 路由器结构的易编稷性和分布式路由器结构的易扩展性等优点 推动了i p 并行化的发 展 在科学研究和商业网络服务等领域都有着良好的发展前淤 在f o r c e s 体系结构研究中 最嫩要的研究内容之 就是对转发功能单元 f 萎 管理站m a n 矩e r 它通常是一个独立的设备 但也可以在一个共享系统中实现 它提供管理者和网络管理系统的接口界面 它至少具有以下部分 a 用作数据分 析故障恢复等网络管理应用的集合 b 监测和控制网络的接口 c 从网络中的所 有被管实体的m m 库中获取数据并形成一个信息数据库 管理信息库m i b 存放各种被管对象的管理参数 m i b 里的信息由管理信息结 构s m i 定义 其信息组成形式类似于一个倒置的树 每个m i b 变量按照从树根 到该变量所经过的所有结点联合标识 代理a g e m 驻留在各种被管对象中 维护本地的m i b 信息 接收由管理站发 来的 b 变量 存取请求报文向管理站回送响应报文 这种响应报文包括管理 站要求存取的m i b 变量值或者是相应错误信息 另一方面 代理也能够在某些 预定义事件发生时向管理站发送t r a p 陷阱报文 一种公共的网络管理协议 这里 我们要重点讨论一下m i b 和s m i m i b 是所有被管对象的抽象集合 它按 树型结构组织 每个被管对象对应树型结构的一个叶子结点 即一个对象 m 1 b 树是静 第1 9 页 国防科学技术大学研究生院学位论文 态树 也就是说 它在设备启动时完成初始化 以后m a l l a g e r 只是检索或修改每个被管 对象的内容 s m i 则详细描述了一个用来定义和构造m i b 的基本框架 描述了m i b 对象的定义 组织识别机制和如何在协议上编码传输 它确定了能够用在m i b 中的数据类型 以及在 m i b 中如何表示和命名资源 m i b 树以及m i b 树中各结点属性是通过被称之为m i b 文件来描述的 m i b 文件根据 a s n 1 语法个人手工编写的 s m i 用来描述如何用a s n 1 的子集定义m i b 例如m i b 中的资源如何命名和表示 包括一个m i b 对象的数据类型 索引方式 访问权限 缺省 值 m i b 涵义 宏定义以及该m i b 对象在m i b 树中的位置 父子结点关系等 s m i 定义中包含以下内容 1 通用简单数据类型 2 通用结构数据类型 3 应用数据类型 4 自定义数据类型 5 访问权限 6 宏定义 被管网络中每个代理都维护着一个m i b 反映在该结点的被管资源的状态 这些资 源的信息共同构成全网的m i b m i b 是一个概念上的数据库 只存储简单的数据类型标 量和二维矩阵 网络管理实体可以通过读取在m i b 库中对象的值来监测位于这个结点的 资源 并且可以通过修改对象的值来控制这些资源 为了实现m m 变量的访问 i s o 与c c i t t 共同制定了区别不同m i b 变量的方法即 命名树 如图3 4 所示 命名树的每一个结点都标记简单说明和一个整型树 用来表示 一个变量 该变量的全局名称定义为从树根到该结点所经过的每个结点的整数标记的排 列顺序 一 7 r o 喇 i 畎i j o h 蚶 碰l i 啷畋3 l 血 0 i f l l c m 邮 丁窀 恻i m 僦2 唧e 衄喇砷 p f l 证 4 il m m 遁1 呲唧站 1 图3 4m i b 的树状结构 第2 0 页 国防科学技术大学研究生院学位论文 m i b 中被管对象具有三个属性 1 1 对象描述符 m i b 中用a s n 1 来对每一个对象作出唯一的标识 反映了对象在 层次结构中的位置 2 语法 使用a s n 1 对一个对象类型结构的正式定义 包括四个特性 a 语法类 型 b 访问 c 状态 d 名字值 3 编码 定义对象类型的实例 其值便可在m a n a g e r 和a g e n t s 之间传输 我们将s n m p 管理框架与f o 圯e s 体系结构进行比较 发现s n m p 中的管理站和代 理可以分别看作一个c e 和一个f e 而驻留在管理站中的m a l l a g e r 和代理中的a g e n t 可 以分别表示为c e 和f e 内的f o r c e s 协议终端 只不过由s n m p 协议取代了f o r c e s 协 议进行通信 同时 m i b 库与我们要构造的f e 模型库也是晾人的相似 从上面的内容 我们可以得到这样的结论 s n m p 管理框架对于我们构建f o 疋e s 体系结构原型系统具 有非常好的借鉴作用 其中的m i b 库描述方法也为f e 建模提供了一个很好的范例 3 3 模型描述语言的研究 不同的应用对形式化语言的要求也各不相同 这就需要开发人员根据自身的情况进 行选择 在最初的研究 1 5 9 1 0 中 研究人员们普遍认为f e 模型描述属于功能规范的描述 因 此在选择规范语言时 人工可读性被认为是最重要的因素 而在线传输的编码 解码和 传输性能等因素只列入参考范围 目前候选的描述语言有a s n 1 u m l x m l s m i s p p i s m l n g 等 a s n 1 s m i s p p i 和s m i n g 都是网络管理中使用广泛的形式化语言 其中a s n 1 用于构建s n m p 中 的管理信息库 虽然有比较好的可读性 模块的结构化比较强 但是它对面向对象语言 支持较差 s m i s p p i 和s m i n g 都是基于a s n 1 的语言 s m i 是a s n 1 的子集 它的 应用范围限制在s n m p 中使用 s p p i 又是s m i 的子集 它的描述只能用于c o p s p r 中 虽然比较前面几种语言s m i i l g 有了很大的改进 比如它部分消除了对a s n 1 的依赖性 并减少了设计中的异常规则 但是它的描述经常用于非正式的描述语句 因此很多用它 描述的程序无法被任何解释器解释 这将为我们以后的工作造成很大的麻烦 l 是现行最通用的文本描述语言 它具有非常好的可读性和描述能力 也便于将 其转换成高级语言代码 对各种转换工具的支持性较好 但是它的描述冗长且在线传输 效率低 除此 现行的软件开发中经常使用u m l 语言对软件建模 它对于模块化的描 述直观且易于转换成代码框架 也便于开发人员使用和改进 这两种语言虽然在描述能 力方面上有种种优势 也易于转换成其他文本语言 但是它们的语法过于复杂 标记的 数量太多 很难转换成可以直接执行的代码使用 从本应用的角度考虑 我们选取模型描述语言的最主要因素是它的模块化描述能力 以及它的语法表示要尽量简单 因此 本课题选用的是a s n 1 语言进行建模 第2 1 页 国防科学技术大学研究生院学位论文 3 4 本章小结 本章主要介绍了构建f e 模型的基础理论知识 我们首先对f e 模型的国内外研究现 状进行了分析 通过分析国外一致认可的i e t f 草案 抽取出模型鬟菊磊搭释精臻嘴缮 崩辩强魁 群疆翟型皇幂枣尊协哒岱j 划 烈 燥耸聊醛电弱攀曾落并篮爵疆 氍鞲骼 钧洲鞠稚酗棘描 嘞蒲滴越限懈 艘嘞阪m 嗡唾渤碥浠啦囊l 州型型 超 高速网络 多媒体网络 和i n l e m e t i n t r a n e t 要求通信具有实时性 高速性 等时性 因此 一个好的网络构架的 实现应该能够支持高速通信 支持应用对通信的不同要求以及简化协议设计 缩短开发 周期等 网络体系结构实现的模型决定了它的整体构架 也是该结构能否实现的关键问题 传统的协议实现模型一般依据标准化文件中对协议的形式化描述将协议进行功能划分 国防科学技术大学研究生院学位论文 4 2 2 数据流编程模型 数据流 d 砒a f l o w 模型 5 2 j 是一种简单实用的编程模型 它与传统的面向过程和面向对 象的编程模型不一样 利用数据流编程模型编写并行程序时 不用显式的进行消息传递 任务分配和任务同步 因此特别适合于构建并发性强的软件系统 数据流计算模型的核心思想是触发准则 当且仅当一个计算过程需要的数据到达时 该计算才会执行 通常 用数据流模型编写的程序可以出一幅有向图来表示 图中的结 点代表计算单元 连接各结点的有向边代表数据的流动路径 当任意一个计算单元所需 的全部数据到达该结点的输入端口后 结点内部的相应代码被触发来处理到达的数据 处理完成后 结果由该结点的输出端口输出 流向下一个处理单元 成为下一个处理单 元的输入数据 当结点问没有依赖关系时 结点的计算任务可以并发执行 由于数据流编程模型具有比较好的并行处理特性 并且是由数据驱动的 在同一时 刻各个满足触发条件的计算单元的输入数据不存在依赖关系 因此各个计算单元可以并 发执行 如果是多c p u 计算机 每个c p u 可以分别对应图中的一个或多个计算单元 如果是单c p u 计算机 可以利用多线程等机制进行并发处理 除了对并发处理的良好支持外 数据流模型还可以很好地描述数据处理与转换的问 题 而且具有很好的可视性与较高的运行效率 因此被广泛应用于面向数据处理的编程 领域 近年以来已经涌现出了一批基于该模型的优秀的图形化编程平台 如用于图像处 理的k h o r o s 用于科学数据可视化系统的a v s 用于组建虚拟仪器系统的l a b v i e w 仰 h p v e e 等等 4 2 3 本系统的模型设计 网络协议实际上是由来自于网络的数据包触发的 并对其进行处理的标准化的规则 考虑到f e 端 它的行为实际上也是由网络的数据包或者来自c e 端的控制和数据信息触 发的 并且 为了提高转发的处理效率和处理速度 挖掘报文转发过程中潜在的并行性 也可阻将f e 端的软件实现代码进行并发处理 也即并发处理要转发的报文数据 虽然 我们在最初的原型实现中可能还不需要考虑报文的并行处理问题 但是为了便于后续研 究的灵活性和可扩展性 以及能够使f e 模型更好地适应未来应用的变化 所以 数据 流编程模型对数据驱动型应用的良好并发性支持 使它自然而然的成为实现f e 建模的 一个可行的备选方案 我们在前面的小节中曾提到 f e 建模中非常重要的任务之一就是如何将f e 的信息 封装成一个便于c e 查询 调用的信息功能库 并控制完成报文转发的操作 利用数据 流编程模型 可以将f e 内部的处理操作进行灵活的分割和组合 被分割后的每个单元 完成一定的任务或操作 这样 将这些操作映射到数据流图中的各个结点中去 结点功 能以及各结点之间的有向边连接关系构成了任务处理逻辑 同时 这些处理逻辑关系可 第2 6 页 瓣薮释学菝零大学疆变生院学链论文 以随着结点功能或有向边的连接的改变而灵活改变 从上面的分析中 我们可以得到这样的论断 即数据流编程模型比较符合f e 建模 的几个关键性要求 因此 在我们这个系统中 将基于数据流图的模型来实现f e 的模 黧擒建 掇据数据滚餮编稳横垄鹣梅造蘸莲 筏髑仍遵循国多 在f 琶建模磅究愚臻中漾雳懿 拓扑建模方法 将对撤文处理的整个流程依据功能划分为一个个逻辑功能模块l f b 报 文流在经过这些模块时 触发执行模块中相应的代码进行处理 l f b 是构建f 嚣模型的 撼本单元 每个l f b 必似一个容器 内部可以包含更小粒殿的l f b 每个l f b 有一个 绒多个输入端日和输嬲端日 作为报文邀如l f b 的通道 黪步到达l f b 输入端翻鹣报 文辍发l 蹈痰部熬楚瀵戴弼 否裂 骚转苓莲行 壬鹰处理搽缛 逶鬻 每令醛转都会 被分配一个线程 举l 蠲多线程机制 多个l f b 可以并发执行 通过将这些输入输出端口 可将l f b 互连起来 形成一幅有向数据流图 l f b 是图的缩点 它们之间的端阴的连接 构成有向边 利用这个模型 报文处理逻辑由图的拓扑结构和l f b 对应所完成的功能唯 确定 l f 8 之溜赘嚣蠢遵售登矮透过它戆竣入蓑日窝辕出麓弱泉完成 这搀 一对夏连弱 输出和输入端墨形成了生产者 消费嚣昭关系 作为玺产者静输出端日产生数撵流焉 作为消费者的输入端口消费该数据流 镣个输出端口定义一个 发送 操作 它将待输 出的参数发往与该输出端口相连的输入端口 输入端刚中定义的事件处理程序 e v c n t h a n d l c r 被发送操作所触发 执行相应的处理代码 处理结果可以由 发遴 操作 涎强给它静调曩者 匿4 3l f b 输入输窭端目实铽示意图 在我们的模型中 输入端口和输出端口是要有类型的 需要事先声明 端口类型声 明包括返回值类型和参数类型 只有声明宪全匹配的输入端口和输出端口才能甄逶起来 这样保证了通信的有效经 输出端口嚣要将待传递的参数拷贝 份 再将该拷贝传递给 它羚游费者 这撵靛霹鑫骚褰l 碡之瘸黪矮合 莠茨壹数豢竞争 第2 7 页 国防科学技术大学研究生院学位论文 结合图4 3 所示的例子 能很好地说明数据流图模型 5 如图所示 e x a m p l e 描述 了一个l f b 实例 它有一个输入端口i n 和三个输出端口o u t l o u t 2 和o u t 3 并且它内 部还包含另外5 个子l f b 实例 c l a s s i f i e r p r o c e s s o d p r o c e s s o r 2 p r o c e s s o r 3 和p r o c e s s o r 4 当有数据包到达e x 锄p l e 的i n 端口时 其内部的事件处理程序被触发 将收到的数据包 转发到c l a s s i f i e r 的访端口 c l a s s i f i e r 表示一个分类器 它依据收到的数据包的类型 将 它们通过不同的输出端口转发到相应的处理单元中去 收到来自c l 嬲s i 矗e r 的数据包后 封装在p r o c e s s o r l p r o c e s s o r 2 p m c e s s o r 3 中的处理代码被触发 对数据包进行相应的处 理操作 然后 将处理过的数据包通知输出端口发送到e x m 印l e 的某个输出端口输出 如 p m c e s s o r l 和p r o c e s s o r 3 或是发送到下一级的处理单元对其进行进一步的处理 如 口r o c e s s o r 2 此图对数据包的处理逻辑由图的拓扑结构和各个l f b 实例的内部处理功能 唯一决定 4 2 3 l 参考模垫 我们在前面的章节中对一些相关的可编程网络模型进行了深入的分析 认为f e 端 的模型与前面几种模型有非常大的相似性 又基于这种f o r c e s 体系结构的特殊要求 我们提出了适用于f o r c e s 体系结构下的f e 逻辑示意图 删 给出了f e 的一个分层参考 模型 如图4 4 所示 f o r c e s 控制网络 图4 4f e 参考模型 在图4 4 中 f e 端被划分为四个层次 首先 与网络直接相连的是f o r c e s 共享终 端层 负责与c e 端的交互 它又可以分为f o r c e s 传输层和f o r c e s 协议层 其中f o 疋e s 协议层定义了f o 疋e s 协议信息以及状态传输模式等 也负责与c e 连接的建立和撤消 向其发送各种订阅 s u b s c 曲e d t 0 事件 同时处理来自c e 的各种状态请求 而f o r c e s 第2 8 页 国防科学技术大学研究生院学位论文 定义 0 b j e c t 二t 1 忡e 宏定义在r f c 文件中的定义如下所示 o b j e c t t y p em a c r 0 b e g i n t y p en o t a n o n s y n l a x t y p e t y p e0 b j e c t s y n t a x a c c e s s a c c e s s s 1 a t u s s t a t i l s l l u en o n 蠼i o n v a l u e l u eo b j e c t n 锄e a c c e s s r c a d o m y r r e a d w 订t e r w r i t e o n l y n o 比c e s s i b l e s t a t u s m a l l d a t o r y i o p t i o n a l o b s o l e t e e n d 利用该宏定义 模型中各种数据类型或对象可以定义为下面的模式 o b j e c l n 锄e o b j e c l 玎y p e s y s n a 0 b j e c t s y s n a t a c c e s s a c c e s s t y p e s l 气1 1i ss t a t u s d e s c r i p t i o n t h ec o i l t e n to f t l l eo b j e c td e s c r i p t i o n n o d e 聊e 在上述的对象宏定义中o b j e c t n 锄e 描述对象的名字 o b j e c t s y s n a 呔描述了该对象 的语法类型 a c c e s s t y p e 表示该对象的访问权限 s t a c l l s 表示该对象当前的状态值 而 d e s c r i p t i o n 域中给出了该对象的具体说明 最后的n o d e 聊e 描述了它在模型构成的 结点树中所属的结点组 其中 每个域的具体值都在o b j e c t t y l e 宏定义中给予了说 明 o b j e 妇m e t h ec o n t e mo f t h ed e f i n i t i o n s f 上面的定义是对o b j e c t t y l 慢宏定义的一种简化形式 括号中的内容即为对象的 定义 除了o b j e c t t y p e 宏定义之外 我们还根据本系统的应用给出了一些自定义宏类 型 下面将分别介绍 第3 4 页 国防科学技术大学研究生院学位论文 o b j e c t n a m eo b j e c i 二d e c l a r a 兀0 nv a l u e 这里是对简单类型的定义方式 这种方式只用于定义字符串类型 多用于定义f e 的属性信息 0 b j e c t n 锄ei n t e r f a c e t y p e s y s n a f u n c t i o n i n t e r f j 虬e f u n c a c c e s s a c c e s s t 如e s 枷r ss t a t u s d e s c r i p t i o n t h ec o n t e n to f t h eo b j e c td e s c r i p t i o n n o d e 聊e 上面是对模型库中与底层交互的接口定义 其中i n t e m c e f u n c 表示o b j e c t n a m e 所 对应的具体接口函数 通常 这些对象声明对应于事先定义好的 能够映射到底层c l i c k 的标准接口函数 这些标准函数是为f o 庀e s 协议层控制l f b 的操作执行而提供的 f e 抽象模型中粗略地定义f e 能力 属性以及l f b 能力约束等信息表述 从而便于 f o r c e s 协议层向模型库查询f e 信息 我们可以将这些信息 1 4 q 归纳为下面的几类 1 f e 能力和l f b 能力声明 1 全局资源查询限制 由于现有使用的l f b 种类较少 因此全局资源对所有l f b 都是可使用的 因此没有给出具体的定义 2 f e 拓扑是否可修改 布尔值 整型m o d i f i a b l e l f b t o p 0 1 0 9 y 首先在实现中构造 静态拓扑 因此m o d i f i a b l e l f b t o p o l o g y 初始值应设置为脚s e o 3 f e 所支持的l f b 类 s u p p o r t e d l f b s 和s u p p o r t e d l f b 聊e 描述f e 可支持的 l f b 种类和数量 应至少支持7 种类型的l f b 4 f e 所支持的属性类型 s u p p o n e d a t 曲u t e t y p e 它包含对对象的访问权限的描 述 以及对f e 所支持的可选 o p t i o n a l 单元的定义 5 l f b 能力声明 l f b 名字 字符串l f b n a m e 通过简单易懂的名字来描述l f b 的功能 每个l f b 所支持的实例个数 l f b i n s t a n c e l i m i t 由于这里涉及到底层硬件 实现所提供的能力 要考虑处理器的承载能力 所以这里限制每个l f b 的 实例个数暂时不超过4 个 即可以同时构建4 个报文转发通路 每个l f b 可以连接的输入输出端口个数约束 用p o r t g m u p l i m i t 和 p o n g r o u p l i m i t i 如e 描述l f b 类所支持的端口组类型和每个端口组中端口数 的限制 通常用数组或结构体表示 l f b 的邻居关系 c a l l o c c w a n e r s c a i l o c c u r b e f o r e s 它们是s u p p o r t e d l f b s 的子类 表示每个l f b 与其他l f b 的邻接关系 l f b 之间的连接通过输入 输出端口描述 第3 5 页 国防科学技术大学研究生院学位论文 图4 7f e 转发表的组织 在图4 7 中描述了两条并行路径 并行路径表包含了一系列逻辑功能单元的索引 逻辑功能单元采用类似链表的组织方式 它保存了逻辑功能单元的位置顺序 在并行路 径l 上 一个i p 报文到达输入端口 然后移动到第二段由i p f o n v a r d c r 单元处理 该处 理持续到报文到达输出端口 这里的多条转发路径都指向了同一类型l f b 也即入口单 元 因此 在这些转发路径上都会有同一l f b i n 肿s s 的不同实例 它们通过l f b 实 例号来加以区分 段的视图链表反映了转发路径中逻辑组成单元的真实布局 转发过程中经由任意一个l f b 时 都需要查询对应该l f b 的转发实例表 或者动 态地选择转向的下一个l f b 或者选取已有的转发表项来完成转发 图4 8 中给出了一 个转发实例表的图示 图4 8 中的例子显示了如何使用并行路径表中的数据路径指针来访问每个l f b 实 例 其中 m e t e rt a b l e 和o u e u et a b l e 分别表示度量器和队列所对应的实例转发表格 首先 并行路径表被访问 每个并行路径表的索引都指向该路径的第一个逻辑功能单元 在从并行路径表中对第二个并行路径索引之后 第一个逻辑功能正在执行度量 数据路 径指针指向该逻辑功能配置的属性 在执行度量功能之后 n e x t 指针域指向下一个逻辑 单元q u e u e 因此 n e x t 指针也指向队列表格中的一行 每个逻辑功能单元转发都需由一个表来维护转发的历史 这样 对表的查找就变得 简单 该策略可以支持任意数目的并行路径 并通过表的值作为索引 第3 8 页 i 一 国防科学技术大学研究生院学位论文 上面的例子给出了使用o b j e c t d e c l a 凡町i o n 宏直接对f e 的状态和属性所做的 定义 而对于模型库中接口的封装采用如下的表述方式 例如 下面给出了一个分类器对 应底层接口的表示 c l a s s i f i e rt n t e r f a c e t y p e s y n t a xf u n c i t o n c l a s s i f i e r 0 a c c e s sr e a d o n l y s t a t u sc u r r e n t d e s c r i p t i o n c 1 a s s i f yt h ep a c k e t si n t of ea c c o r d i n gs o m ea i g o r i 血m i n t e r f a c e 聊e1 上面是对c l a s s i f i e r l f b 对应底层接口函数的定义 接口函数的名字直接对应底层软 件路由器所提供的实现函数名 在封装后 f o r c e s 协议层可以直接进行调用 4 4 模型与f o r c e s 协议的关系 4 4 1 模型与f o r c e s 协议的关联 f o r c e s 协议是维持c e 与f e 之间通信的通道 它可以用来查询并发现f e 之间的 拓扑关系 f e 内的数据通路实现 其中包括l f b 拓扑和每个l f b 的可操作能力和属性 都将通过f o r c e s 协议传递给c e 这时 每个l f b 模型就需要定义f e 与c e 间用于对 l f b 进行配置和管理的所有信息 4 4 2f o r c e s 协议层从模型库获取信息的方法 f e 端f o 忙e s 协议层主要的任务是建立与c e 的连接 处理来自c e 的控制信息 包括各种查询请求 配置请求等 以及向c e 返回请求结果等 面临的一个问题是f 0 r c e s 协议层又是如何从模型库中获取这些信息 或是对模型库进行相关的配置 从而完成速 熟群荆糍 x 国防科学技术大学研究生院学位论文 展c l i c k 简单方便 很好地达到了c l i c k 对灵活性的设计目标 使用c l i c k 构造路由器时 用户根据自己的需求结合c l i c k 的抽象方法确定路由器工 作时的功能模块 接着从c h c k 提供的组件库中选取能够实现所需功能的组件将各组件 连接成图 当c l i c k 没有相应的组件支持时 用户可以自行开发新的组件并结合到系统 中去进行配置 向c l i c k 系统提交配置 自动完成程序链接从而构造出符合需求的软件 路由器 由上述的介绍 我们可以看到 由于c l i c k 软件路由器的模块化和自主连接能力 它非常适合实现f e 模型中的具体功能操作 因此 在具体实现中 f e 建模将基于c l i c k 软件路由器所提供的模块来构建转发通路 这样 f e 模型对各功能块的描述应该是对底 层c l i c k 中具体实现的映射 也是对其中模块具体实现的功能 状态和能力的描述 这样 满足模型设计需求的同时 还需要根据c l i c k 中定义的模块来确定f e 的基本 模块 在最初的原型系统构建中 我们采用直接映射c l i c k 中功能实现函数的方法 也 即直接使用c l i c k 提供的模块来构造转发通路拓扑图 可参见图5 1 所示 图5 1对应于底层软件路由器的转发拓扑设计 第4 4 页 国防科学技术大学研究生院学位论文 由上图可知 我们在模型中至少需要描述图中所给出的功能函数 这里只是直接使 用了c l i c k 提供的功能模块 3 也可以根据功能需求向拓扑图中动态添加功能 或者在 c l i c k 中手工添加新的单元来扩展f e 的转发功能 c l i c k 为报文转发提供了很好的动态组 织和动态重构的能力 在实现中 我们采用面向对象的编程方法 每个l f b 都被看成一个类 它可以拥有 自己的子类和父类 对应的每个l f b 实例在实现功能操作时都会映射到类中与底层软件 路由器交互的接口 图5 2 给出了f e 中l f b 实现的示意图 4 9 f e 通过底层软件路由器来完成具体的功 能操作 当指定了报文转发中使用的功能块后 就会调用由l f b 类创建的各个l f b 实 例 继而由各实例调用底层的物理单元来完成相应动作 然后再映射到底层软件路由器 实现 通过在l i n u x2 4 1 8 1 8 上构建c 1 i c k1 4 1 软件路由器 我们对c l i c k 提供的模块 进行直接调用 重载或添加新模块来实现各功能的实际操作 低层接口 l 麓娄麟由 毖目 e 隈l 脚态和 一毛f b 张剖瓣i 降调别l 麟穰jl 辩l 连接 型和笆 一 理接口臣 i 了鼍零丽器爱 虿 j 指定使用的 l f b 对应的l f b i s t a n c e s 基本l f b c i a s s 姻 图5 2l f b 在f e 中的实现示意图 另一方面 当模型与底层c l i c k 进行交互时 需要与c l i c k 定义一些标准a p i 才能启 动各功能模块的具体实现 因此 在模型库中将与c l i c k 进行交互的接口函数进行封装 便于f o r c e s 协议层直接调用 这些接口定义通常是直接使用c l i c k 中的函数名 并通过 模型描述语言封装在模型库中 当模型库信息被解析为可执行代码后 将嵌入到f o r c e s 协议层代码中 这样 对这些接口的调用可以象使用系统调用一样 能够直接映射到指 定的函数入口 5 2 模型转换工具的实现 第4 5 页 国防科学技术大学研究生院学位论文 要实现模型描述文件到可执行c 语言代码的转换 必须借助语言解析器的帮助 这 一节的主要工作就是构建这样一个解析器 5 2 1 具体实现方案 考虑到模型描述语言a s n 1 在结构上非常规整 具有很好的模块化结构 它的语法 相对其他高级语言来说要简单得多 因此 应选用一种实现简单 代码生成效率高的编 译工具 l e x y a c c 工具1 4 4 j 是现行编译器的主要开发工具 由于它简单易学 并且开发能 力非常强 所以也成为本课题开发解析器的首选编译工具 首先 要对模型描述语言a s n 1 的语法进行分析 确定需要使用的标记来构造词法 分析程序 然后在语法分析程序描述出a s n 1 的语法结构 同时要编写支持的用户子例 程 经编译运行通过的程序文件就组成了我们所需要的解析器工具 解析器 调用面且嚣 f o r c e s 协议终端 标准功能接 参数信息 图5 3 解析器工作示意图 解析器的执行是在一个独立的线程中 它首先导入描述文件 将描述中的模块体定 义转换到相应的数据结构里 将方法动态连接库调入 解析器负责导入描述文件 调入 方法库 解析器工作的示意图如图5 3 所示 解析器的工作流程 1 在初始化时调入f e 模型文件 将其导入解析器中 2 模型文件转换成数据流流入词法扫描程序进行文法检查 在逐行扫描时会根据词 法扫描程序中定义的标记去匹配相应的动作 将匹配的标记传递给语法分析程序 3 将通过文法检查的字符流经过语义检查 根据语法分析程序中定义的语法规则去 匹配相应的执行动作 4 如果在模型文件中出现非法定义 解析器或者忽略或者抛出错误异常 5 解析通过的文件即为与模型对应的可执行代码 6 对生成的代码进行编译 编译通过的代码即可作为最后的实现代码 在c e 与f e 建立连接之后 f o r c e s 协议层捕获任何来自c e 的请求 如c e 向f e 第4 6 页 国防科学技术大学研究生院学位论文 查询各种属性和状态信息等 使用解析器将请求信息转换成可直接对f e 功能类库执行 的访问请求 可进行查询 配置等操作 返回的标准接口函数或各种参数信息会返回给 f o r c e s 协议终端 再由f o r c e s 协议层执行相应的代码完成一次请求操作 将结果返回 给c e 我们将在后续的几节中详细介绍解析器工具的开发全过程 5 2 2l e x 付a c c 工具介绍 对一个语言的处理一般分为词法分析和语法分析两个阶段 编程语言编译器首先对 用户事务进行词法和语法分析 检查输入的源程序是否符合编程语言的语法规则 其中 词法分析的任务是从左到右逐个字符地对源程序进行扫描产生一个个单词符号 这个阶 段识别低级的对象 如数 操作符和专有的符号 语法分析的任务是按编程语言的语法 规则 识别单词符号串是否构成相应的语法范畴 在这个阶段识别高级的对象 如程序 设计语言中的语句 无论是词法分析程序还是语法分析程序 用手工编写都是十分繁琐 的 因此在l i n u x 系统中提供了l e x l e x i c a l 姐a l y z e r 和y a c c y e ta n o m e rc o m p i l e r c o m p i l e r 等软件工具 4 4 5 1 这些工具不仅大大地简化词法分析程序和语法分析程序的 开发工作 而且还能帮助用户完成许多其他任务 l e x 和y a c c 都是2 0 世纪7 0 年代由贝尔实验室开发的 y a c c 的开发早于l e x 它是 由s t e p h c ncj o h n s o n 开发的 自第7 版u n i x 以来 l e x 与y a c c 己成为标准的u q 实 用程序 下图描述了将l e x 与y a c c 结合工作的流程 图5 4l e x 与y a c c 结合工作时示意图 码 第4 7 页 国防科学技术大学研究生院学位论文 语法定义标记如下表 表5 3 语法定义标记 标记名称描述说明 0 b j e c t t y p e对象类型宏定义定义各个对象的属性 s y n t a x对象的数据类型通用的结构或子定义 a c c e s s访问权限对应于四种权限中的一种 s t a t u s对象当前状态指出当前状态是必要的 可 选的还是被废弃的 d e s c r i p t i o n对象描述描述该对象的含义 o b j e c t d e c l a r 芦汀i o n类型声明对类型的声明 s e q u e n c e字符串类型表示对象的类型是字符串 i n t e g e r 整型表示对象类型是整型 s t r u c t结构体类型表示对象类型是结构体 c h a r字符类型表明对象类型是字符 e n u m枚举类型表明对象类型是枚举类型 i n t e r f a c e t y p e接口类型宏定义接口封装 f u n c t i o n函数类型表示所对应的接口函数 表5 3 给出了模型描述文档里宏定义使用的 些关键字标记 它们将作为语法分析 程序中主要关键词出现 由它们组合来表达所描述的语法 5 2 4 语法分析程序描述 根据a s n 1 的语法 使用词法分析程序中定义的标记 我们在y a c c 文件f e i n n i b y 中定义了下面这些语法产生式规则 严根据语法描述规则 给出主要句型表达式 e x p r t y p e d e fo b j e c t t y p e s y n 仉气xi n t e g e ra c c e s sr ws t a n7 ss t p r i n t 坟 伊o b j e c t l e s4 n c h a r 1 5 6 p r i n t f a c c e s s m o d e d n 6 7 一 8 p r i n t f s t a t u s d n 8 p r i n t 划i n t s n c h a r 1 第5 2 页 国防科学技术大学研究生院学位论文 t y p e d e f o b j e c t t y p e s y n t a xs t i c l a s s i 垂l e 卜 l e t 0 卜 q u e u e s c h e d u l e f b 酬e f 测试结果为 幸十七 枣木 卑唪串水串掌堆幸 十 十 十书书本木母幸幸枣牛母 幸车 十卡 书年丰幸 p 将显示在模型文件中对应的与c l i c k 交互的标准接口 f r o m d 盯i c e e l 髂s i 曩e 第6 2 页 国防科学技术大学研究生院学位论文 m e t e q u e u e r o u l l d r o b i n s c h d l o o k u p i p r o u t e r 十 串丰 十 女 女 十七十木 十 率半年率十 十 木本车 率 十 从f e 显示的结果可以看出 f e 上启动的底层实现接口可以完全匹配从c e 端发送 来的请求 这表明c e 可以对f e 完成正确的报文转发控制 案例2 d a t 印a m 2 表示不指定路由 而使用缺省路由路经2 得到的测试结果是 女 女木 丰 丰 十幸 十 率车十十 幸枣斗木 十 十丰年率卑 十 产将显示在模型文件中对应的与c l i c k 交互的标准接口 f r o m d e v i c e c 1 a s s m e p a i n t c h e c j i p h e a d e g e t i p a d d r e s s l o o k u p l p r o u t e r a r p q u e r i e r q u e u e t b d e v i c e t 女女 女 女 女 十木水牛 十幸幸 卡车率 f e 根据c e 的要求使用了缺省的路径2 按照缺省的转发路径正确地去调度底层接 口 通过对上面设计的几个简单案例的测试 得到的测试结果与我们最初设想的一致 但是 由于在底层软件路由器尚未搭建成功之前 我们很难完成实际的转发工作 因此 我们只是对f e 模型的简单功能进行测试 测试还很不完善 测试的力度也远远不够 还无法对模型库的完备性进行评价 因此 我们还需要在以后原型系统测试中得到具体 的测试结果 6 3 f e 的进一步测试 由于我们在最初构建f e 模型库时使用的是数据流建模方法 目的就是在于提高f e 并行转发的能力 因此 我们在这里还进行了一些关于并行转发情况的测试 测试5 仍采用图6 1 中的测试环境 这时两台c e 同时向一台f e 发送查询或配置 第6 3 页 鬻薅辩学接拳丈学疆究生魏学搜论文 请求 查看测试结果 测试6 继续采用图6 1 中的测试环境 两台c e 同时开始控制来调度f e 的底层接 口 查看测试结果 溪l 试5 戆漠l 试寨铹麴下 c e l s e f e n a l l l e h e h e g e t f e i d s e t m o d i 最a b l e l f b l b p o l o g 乳1 g e f e s 拯瓣s c e 强 i 1 1 9 r e s s c l a s s i n e 卜 疆 w s c h e d u l e 卜 f b n v a r d e r 测试结果 c e l 端 幸 幸幸毒幸幸枣章 幸 拳串卓卓率卓 枣弗母枣毒毒事幸幸幸 章章幸率枣 产在霹纂上显示绥袋t f e n 锄e h e h o l m o d i f i a b l e l f b t b p 0 1 0 9 y l 女 奉毒毒幸幸奉 奉唪 串 牛奉 丰 幸砖幸卓唪幸幸串 幸车 幸卓宰 f 琶壤 事幸十奉 车幸唯枣木粤幸 串卓隼幸 幸幸幸奉 章粤母串事牛率中宰 幸 产在屏幕上显示络果 f e n a m e h e h e 壬壬c l l e 晒越d 钎 e e m o d i 蛀a b l e l f b t o p o l o g y l c l a s s i 矗e r q u e u e f e s t a t h s l 轴蕊蕊b 魄s e 囊嫩 第6 4 页 国防科学技术大学研究生院学位论文 6 4 本章小结 本章主要对f e 模型的正确性进行验证 测试从四个方面内容进行 通过测试结果 可以看出 本文所构建的f e 模型系统能够正确执行c e 所发来的各种配置和查询信息 从课题的角度而言 已经达到了我们预期的目标 同时 我们还希望一个f e 能够同时 服务于多个c e 因此 最后还进行了一些多c e 的并发执行测试 但是结果在反映并发 情况时并不很明显 因此 希望能在原型系统搭建好后做进一步测试 第6 6 页 黧貔辩学技拳夫学研究生浣学佼论文 第七章总结与展望 7 l 本文的工荐总结 随着网络规模的迅遥扩大和运行速度的快速提舟 新型网络与通信技术 姆光邋信 移动通信 不断融入于网络应用中 人们越来越迫切的需要虢取更便利 更丰富 更及 时的网络应用和服务 同时i n t e m e t 向金周多服务型网络的演化趋势也对网络系统的灵 嚣性 可靠性和性能掇蹬了更高的要求 并且 伴随新一代亘联网技术研究的发展 以 及鬃群路交器痤建麴不疑增长 簧绞韵瓣络俸系臻穗帮臻囊器臻狡已经不爱逶痰予不瑟 磁现的b 耨胃异酶斑粥 对新一代互联阏技术的研究 研发爨能适合未来发展需求能瓣 络体系结构则变得越米越重要 f o r c e s 体系结构的提出为研究人员开辟了一片更广阔的天空 它的结构更滔台构架 在嶷群路由器环境上柬提高报文转发的性能 它的实现将使网络应用变得快速丽简单 黧魏 萝 瓮e s 接系缭秘豹硒窝藏爻蔌一代要联舞技术魏热虑瓣麓 本文承撵了穗遽该搭 系结构骧垒系统中熟一部分重要任务 瀑点分袄了该谗系绥章奄下的f e 端

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论