通信工程毕业设计(论文)-OpenFlow可视化管理系统设计与实现.doc_第1页
通信工程毕业设计(论文)-OpenFlow可视化管理系统设计与实现.doc_第2页
通信工程毕业设计(论文)-OpenFlow可视化管理系统设计与实现.doc_第3页
通信工程毕业设计(论文)-OpenFlow可视化管理系统设计与实现.doc_第4页
通信工程毕业设计(论文)-OpenFlow可视化管理系统设计与实现.doc_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

北京邮电大学本科毕业设计(论文)本 科 毕 业 设 计(论文)题目: OpenFlow可视化管理系统设计与实现姓 名 学 院 信息与通信工程学院 专 业 通信工程 班 级 学 号 班内序号 15 指导教师 2012 年 6 月IIOpenFlow可视化管理系统设计与实现摘 要OpenFlow技术是当今引人瞩目的一种新型网络交换模型,它打破了当今网络的IP承载结构,有望解决互联网可控性差的问题。从07年提出到现在,OpenFlow已经在硬件和软件支持方面取得了长足的发展。对于部署了OpenFlow技术的真实网络来说,目前在网络管理上的解决方案往往比较复杂。为解决网络管理上的困境,本次毕设借助PMS平台,搭建了一个OpenFlow可视化管理系统。该系统包括OpenFlow工作信息解析与存储模块及OpenFlow工作信息前端展示模块。OpenFlow工作信息解析与存储模块,主要涉及解析XML文件、建立数据库接口等后端子功能;OpenFlow工作信息前端展示模块,主要涉及从数据库中读取数据,以文字的形式展示在页面上,并根据当前的网络情况绘制网络拓扑图。此系统的实现涉及JDBC、JSP、JavaScript、MySQL等多种开发技术,实现了展示当前网络拓扑结构、展示OpenFlow工作信息、查询任意两点间最短路径等功能。Web服务端的设计和实现采用了JSP + MySQL + JDBC 的技术路线,使用设计模式中的工厂模式和模板模式实现了数据访问层,具有较好的通用性和可移植性。利用动态网页JSP技术,加上Javascript脚本将系统功能呈现在页面上,使得只要有浏览器就能使用系统的所有功能,实现了较好的人机交互性。本文将对此系统的背景技术、需求分析、设计方案及效果测试做详细介绍。关键词: OpenFlow 网络拓扑 JSP JDBC JavaScript绘图Design and Implementation of OpenFlow Visible Management SystemABSTRACTOpenFlow is a notable kind of network-exchange model,which replaces the current IP-based structure, hopefully resolving the problem of poor controllability in Internet. OpenFlow technology has made great development on both hardware and software. Generally, the network management system which has deployed OpenFlow technology is complicated. In order to get out of the difficult in management, I developed a visible management system for OpenFlow, with the developed Policy Management System in the graduate-design. This system includes a module to resolve and save the OpenFlow information and a module to display the OpenFlow information. The first module involves how to resolve a XML file, how to make a database interface and other function in the background. The second module involves how to load the data from the database, how to display information on the page, and how to draw current network topology.The visible management system involves JDBC, JSP, Javascript, MySQL and other development technology, which can display the current network topology and OpenFlow information, and query the shortest path between any two nodes. Web server design and realization of the JSP + MySQL + JDBC technical route, use the design patterns in the factory model and template model to achieve data access layer, which has better versatility and portability. By using the dynamic web JSP technology, plus Javascript script will present the system function on the pages that as long as there is the browser will be able to use the system function, realized all good human-machine interaction. This article will talk about the background technology, the demand analysis, the design scheme and the testing effect of the visible management system.KEY WORDS: OpenFlow network topology JSP JDBC javascript mapping目 录第一章绪论11.1课题背景11.2课题研究的主要问题11.3论文结构2第二章课题背景及技术简介32.1OpenFlow技术背景32.1.1互联网的现状及OpenFlow的诞生132.1.2OpenFlow的技术特点32.1.3OpenFlow网络的基本组成452.2PMS系统简介82.3主要开发技术简介6 792.3.1JDBC92.3.2JSP/J2EE容器92.3.3SVN92.3.4SQL/MySql102.3.5HTML102.3.6JSP102.3.7Javascript及Raphael绘图102.3.8AJAX11第三章OpenFlow可视化管理系统需求分析与总体设计123.1OpenFlow可视化管理系统需求分析123.2OpenFlow可视化管理系统总体设计13第四章系统设计与实现154.1OpenFlow信息解析与存储模块设计方案154.1.1OpenFlow信息解析与存储模块整体介绍154.1.2模块内部结构和处理流程164.1.3各子模块函数设计说明184.2OpenFlow信息前端展示模块设计方案214.2.1OpenFlow信息前端展示模块整体介绍214.2.2模块内部结构和处理流程234.2.3各子模块函数设计说明24第五章效果测试及说明305.1导航栏效果图305.2设置时间间隔及显示路由器OF流表信息305.3查询任意两点间最短路径31第六章结束语35参考文献36致 谢37II北京邮电大学本科毕业设计(论文)第一章 绪论1.1 课题背景随着互联网的发展,今天的互联网业务对互联网网络提出了越来越高的传输质量要求,互联网可控性差的缺点日益暴露出来。为解决网络可控性差的问题,OpenFlow技术应运而生。OpenFlow技术最早在2007年由美国斯坦福大学的研究者提出,它是当今一种新型网络交换模型。自提出始,该技术已经得到了长足的发展,目前OpenFlow论坛已经变成一个由大学的研究者和网络管理者共同组成的开放论坛,吸引了来自麻省理工学院、加州理工学院等著名高校的教授以及Deutsche Telekom这样的大型电信公司的网络一线工程师加盟。当前较为常用的网络信息管理系统,通常采用B/S架构实现。B/S架构可以使网络管理人员通过任何一台联网的PC,无论其系统如何,都可以通过浏览器来访问服务器端的资源。当前已有的一些相关研究对B/S架构的OpenFlow网络管理系统进行了尝试,但这些研究目前应用并不广泛,且在其系统必须通过OpenFlow网络中的特定Controller来实现信息的获取。而且,对于部署了OpenFlow技术的真实网络来说,目前在网络管理上的解决方案往往比较复杂。本项目组对OpenFlow技术展开了深入研究,已经搭建了一套独立于Controller的控制程序OFCP,作为OpenFlow系统的控制程序。为解决网络管理上的困境,本次毕设就是在项目组原有的PMS系统中,在OpenFlow技术的研究项目中,构建OpenFlow可视化管理系统。1.2 课题研究的主要问题OpenFlow可视化管理系统的设计与实现,需要使用OFCP控制程序,在PMS系统上,实现B/S架构的可视化管理系统。在此系统上,用户可以根据所求查看当前网络的拓扑结构,并查询网络中任意两节点间的最短路径;如果两节点间最短路径中包含OpenFlow隧道,可视化系统可以在拓扑图中以特殊标识显示出来,并以文字信息的方式提示OpenFlow隧道部分。为展示OpenFlow工作信息,首先要将系统中当前存在的OpenFlow工作信息存储到数据库中,并编写完善的数据库接口;绘制网络拓扑图需要根据读取到的网络工作信息,采用适当的绘图工具在页面上绘制动态的网络拓扑图。以上两个功能点是本次毕设的主要难点。此外,还需要调用最短路径查询算法,计算网络中任意两点的最短路径,并将此信息显示在页面上。1.3 论文结构本文将对本次毕业设计的研究背景、使用的技术、需求分析、总体设计、效果测试做详细介绍。文章的第二章2.1节首先将对OpenFlow网络技术进行介绍,包括OpenFlow技术的诞生、OpenFlow的技术特点及OpenFlow网络的基本构成,通过阅读本节内容,可以对OpenFlow网络技术有一个初步的了解。文章第二章2.2节将对PMS系统的结构和功能进行介绍。文章第二章2.3节,将介绍本次毕业设计所用到的编程开发技术,包括JDBC模块、J2EE容器、JSP语言、Javascript、Html语言等。第三章将对本次毕业设计项目的需求分析及总体设计方案做简要说明。第四章是本次毕设项目的详细设计方案说明,也是本文最主要的部分。OpenFlow可视化管理系统的构成可以分为两个主要部分,OpenFlow工作信息解析与存储模块和OpenFlow工作信息前端展示模块。文章将依次对两模块进行概要说明和详细说明,介绍模块的结构组成、设计逻辑、定义的主要函数及数据结构。第五章将展示本次毕设的设计效果,包括显示节点的OpenFlow流表信息、查询任意两节点间最短路径,显示其中OpenFlow隧道部分等。第六章结束语是本作者在此次毕业设计中的心得体会。第二章 课题背景及技术简介22.1 OpenFlow技术背景2.1.1 互联网的现状及OpenFlow的诞生1当今,互联网的应用迅速发展,由于刚开始设计时并没有考虑到互联网的规模会如此庞大,承载的应用会如此复杂,地位会变得如此重要,导致现代的互联网在过重的压力下已经凸显出太多亟待解决的问题:1. 互联网很危险,恶意攻击、病毒、木马每年都会造成上千亿美元的损失;2. 互联网太脆弱,无标度(Scale-Free)的特性让整个网络可以在少数精心设计的攻击下即可宣告崩溃;3. 互联网太随意,p2p等应用的出现一度造成各大ISP网络堵塞,严重影响传统正常的访问;4. 互联网太迟钝,现代臃肿的路由机制不能支持快速的更新,即便发现问题也无法快速反应。这一切的问题都隐隐的指向了互联网这个庞然大物最关键的软肋可控性。是否有可行的手段来提高互联网的可控性? OpenFlow正是美国斯坦福大学为解决这个问题于2007年提出的一种支持网络创新研究的新型网络交换模型,该模型通过开放的流表支持用户对网络处理行为进行控制,从而为新型互联网体系结构研究提供新的实验途径,因此OpenFlow提出后得到学术界和工业界的广泛关注。2.1.2 OpenFlow的技术特点(1) OpenFlow技术将完全打破现有的IP承载架构3。OpenFlow的流表(Flow Table)由很多流表项组成,每个流表项就是一个转发规则。进入交换机的数据包通过查询流表来获得转发的目的端口。OpenFlow的流表中每一个流表条目支持3个部分:规则、操作、状态。规则用来定义流表,OpenFlow里的流表定义十分宽泛,支持10个域(除了传统的7元组之外增加了交换端口、以太网类型、Vlan ID,见图2-1),头域是个十元组,是流表项的标识;操作就是转发、丢弃等行为,操作标明了与该流表项匹配的数据包应该执行的操作;状态部分则是主要用来做流量的统计数据。在此基础上,OpenFlow最关键的特性就是支持远端的控制,试想如果要改变流表条目就必须跑到交换机前重新编程写入有多麻烦,如果想获知网络的实时状态,就可以通过远程控制得到。有了统一的控制机制,我们的网络才能变得真正智能、可控起来。图21 OpenFlow 流表项包头域示意图从这个意义上说,OpenFlow将传统的物理固定的硬件定义互联网改造成为了动态可变的软件定义互联网。一个软件定义的、可控的互联网,除了更加灵活以外,毫无疑问,通过恰当的控制算法,将大大提高网络自身的健壮性、运行效率以及安全性。 (2) OpenFlow的思想对网络创新有巨大意义由于现在的网络暴露出了越来越多的弊病,人们对网络性能的需求也日趋提高,研究人员不得不把很多复杂功能加入到路由器的体系结构当中,例如OSPF、BGP、组播、区分服务、流量工程、NAT、防火墙、MPLS等等,这就使得路由器、交换机等交换设备越来越臃肿而且性能提升的空间越来越小。 然而与网络领域的困境截然不同的是,计算机领域实现了日新月异的发展。计算机网络体系结构的专业人士认为:网络可以通过复制计算机领域的成功来解决现在网络所遇到的所有问题。在这种思想的指导下,未来的网络必将是这样的:底层的数据通路(交换机、路由器)是“哑的、简单的、最小的”,并定义一个对外开放的、关于流表的公用的API,同时采用控制器来控制整个网络。未来的研究人员就可以在控制器上自由的调用底层的API来编程,从而实现网络的创新。 OpenFlow正是这种网络创新思想的强有力的推动者。OpenFlow交换机将原来完全由交换机路由器控制的报文转发过程,转化为由OpenFlow交换机和控制服务器来共同完成,从而实现了数据转发和路由控制的分离,控制器可以通过事先规定好的接口操作来控制OpenFlow交换机中的流表,从而达到控制数据转发的目的。2.1.3 OpenFlow网络的基本组成4OpenFlow网络由OpenFlow交换机、Flow Visor和Controller三部分组成。从功能上说,OpenFlow交换机进行数据层的转发;FlowVisor对网络进行虚拟化;Controller对网络进行集中控制,从而实现控制层的功能。OpenFlow网络的结构如图2-2所示: 图2-2 OpenFlow网络结构示意图(一) OpenFlow交换机 OpenFlow交换机是整个OpenFlow网络的核心部件,主要管理数据层的转发。每个of 交换机都有一张流表,进行包的查找和转发。交换机可以采用of协议,经一个安全通道连接到外部控制器,从而对流表进行查询和管理。OpenFlow交换机接收到数据包以后,首先在本地的流表上查找转发目标端口,如果没有匹配,则把数据包转发给Controller,由控制层决定转发端口。 OpenFlow交换机由流表、安全通道(Secure Channel)和OpenFlow协议三部分组成。如图2-3所示:图2-3 OpenFlow交换机结构图流表是交换机进行转发策略控制的核心数据结构。交换芯片通过查找流表表项来决策对进入交换机的网络流量采取怎样的行为,每个表项包括三个域,包头域(header field),计数器(counters),行动(actions)。header fieldcountersactions安全通道是连接OpenFlow交换机到控制器的接口,所有安全通道必须遵守OpenFlow协议。控制器通过安全通道控制和管理交换机,同时控制器接收来自交换机的事件并向交换机发送数据包。交换机和控制器通过安全通道进行通信,而且所有的信息必须按照OpenFlow协议规定的格式来执行。 OpenFlow协议用来描述控制器和交换机之间交互所用信息的标准,也是控制器和交换机的接口标准。协议的核心部分是用OpenFlow协议信息结构的集合。 OpenFlow协议支持三种信息类型:Controller-to-Switch,Asynchronous和Symmetric,每一个类型都有多个子类型。Controller-to-Switch信息由控制器发起并且直接用于检测交换机的状态;Asynchronous信息由交换机发起并通常用于更新控制器的网络事件和改变交换机的状态;Symmetric信息可以在没有请求的情况下由控制器或交换机发起。以下为协议执行流程:(1) 链接建立阶段通过安全通道建立连接,所有流量都不经过交换机流表检查。因此交换机必须将安全通道认为是本地连接。当连接建立起来以后,两边必须先发送OFPT_HELLO消息给对方,该消息携带支持的最高协议版本号,接受方将采用双方都支持的最低协议版本进行通信。一旦发现两者拥有共同的协议版本,则建立连接,否则发送OFPT_ERROR消息(类型为OFPET_HELLO_FAILED,代码为OFPHFC_COMPATIBLE),描述失败原因,并终止连接。(2) 连接中断当连接发生异常时,交换机应尝试连接备份的控制器,当多次尝试均失败后,交换机将进入紧急模式,并重置所有的TCP 连接。此时,所有包将匹配指定的紧急模式表项,其他所有正常表项将从流表中删除。此外,当交换机刚启动时,默认进入紧急模式。(3) 加密安全通道采用TLS(Transport Layer Security)连接加密。当交换机启动时,尝试连接到控制器的6633 TCP 端口,双方通过交换证书进行认证。因此,每个交换机至少需配置两个证书,一个是用来认证控制器,一个用来向控制器发出认证。(4) 生成树交换机可以选择支持802.1D 生成树协议,如果支持,所有相关包在查找流表之前应该先在本地进行传统处理。支持生成树协议的交换机在OFPT_FEATURES_REPLY消息的compabilities 域需要设置OFPC_STP 位,并且需要在所有的物理端口均支持生成树协议,但无需在虚拟端口支持。生成树协议会设置端口状态,来限制发到OFP_FLOOD 的网包仅被转发到生成树指定的端口。需要注意指定出口的转发或OFP_ALL 的网包会忽略生成树指定的端口状态,按照规则设置端口转发。如果交换机不支持802.1D 生成树协议,则必须允许控制器指定泛洪时的端口状态。(二) 支持网络虚拟化的FlowVisor 类比计算机的虚拟化,FlowVisor就是位于硬件结构元件和软件之间的网络虚拟层。FlowVisor允许多个控制器(controller)同时控制一台OpenFlow交换机,但是每个控制器仅仅可以控制经过这个OpenFlow交换机的某一个虚拟网络(即slice)。因此通过FlowVisor建立的试验平台可以在不影响商业流的转发速度的情况下,允许多个网络试验在不同的虚拟网络上同时进行。FlowVisor与一般的商用交换机是兼容的,不需要使用FPGA和网络处理器等可编程硬件。 (三) Controller OpenFlow实现了数据层和控制层的分离,其中OpenFlow交换机进行数据层的转发,而Controller实现了控制层的功能。Controller通过OpenFlow协议这个标准接口对OpenFlow交换机中的流表进行控制,从而实现对整个网络进行集中控制。Controller的一切功能都要通过运行NOX来实现,NOX就像是OpenFlow网络的操作系统。此外,在NOX上还可以运行Plug-n-serve、OpenRoads以及OpenPipes等应用程序。 Plug-n-Serve 通过规定数据传输路径来控制网络以及服务器上的负载,从而使得负载均衡并降低响应时间。 OpenRoads 是支持OpenFlow无线网络移动性研究的框架。OpenPipes 可以在网络系统中通过移动每个子模块来测试每个子模块,并可以决定如何划分设计单元。2.2 PMS系统简介涉私密,留空2.3 主要开发技术简介6 72.3.1 JDBCJDBC,全称Java Data Base Connectivity,即Java数据库连接的意思,它是用于java程序执行SQL语句的API接口。不同厂商出产的数据库驱动不同,而JDBC提供了一种共同的基准,数据库开发人员可以构建更高级的工具和接口,从而编写更复杂的数据库应用程序。简单地说,JDBC主要完成三件是:与数据库建立连接、发送操作数据库的语言、处理返回的结果。其中“与数据库建立连接”的过程,由于不同厂商出产的数据库连接方式不一样,JDBC提供了“驱动程序”的概念,对于不同的数据库,程序只需要使用不同的驱动,就可以连接到不同的数据库,从而解决了这个问题。本次毕设需要从数据库中读取OpenFlow流表信息及OpenFlow隧道信息,均采用JDBC的API实现了数据库数据的写入、修改和读出。2.3.2 JSP/J2EE容器J2EE即Java2平台企业版(Java 2 Platform,Enterprise Edition)。它的核心是一组技术规范与指南,其中所包含的各类组件、服务架构及技术层次,均有共同的标准及规格,让各种依循J2EE架构的不同平台之间,存在良好的兼容性。这种基于组件、具有平台无关性的J2EE 结构使得J2EE 程序的编写十分简单,因为业务逻辑被封装成可复用的组件,并且J2EE 服务器以容器的形式为所有的组件类型提供后台服务。J2EE平台由APPLET容器、应用客户端容器(application client container)、Web容器(Servlet和JSP容器)和EJB容器(Enterprise JavaBeans Container)等4种类型的程序容器组成。Applet 容器是运行在客户端机器上的web浏览器和 Java插件的结合;Web 容器管理所有J2EE 应用程序中JSP页面和Servlet组件的执行,Web 组件和它们的容器运行在J2EE 服务器上;应用程序客户端容器管理所有J2EE应用程序中应用程序客户端组件的执行;EJB 容器管理所有J2EE 应用程序中企业级bean的执行。本次毕设涉及到的WEB前端应用程序使用的就是Web容器的Servlet和JSP容器。2.3.3 SVNSVN即Subversion,是一种集中式文件版本管理系统,辅助团队协同开发工作。集中式代码管理的核心是服务器,所有开发者在开始新一天的工作之前必须从服务器获取代码,然后进入自己的分支,进行开发工作,解决冲突后,再将自己新开发的代码提交到服务器上。这样,所有的版本信息都放在服务器上,可以免除团队因为信息不对称在开发过程中造成的误会。但是如果脱离了服务器,开发者的代码就只能在本机工作了。本次毕设也是利用项目组的SVN系统进行开发工作。2.3.4 SQL/MySqlSQL即结构化查询语言(Structured Query Language),是目前最常用的数据库操作语言,SQL 是用于访问和处理数据库的标准的计算机语言。本次毕设用到的数据库是MySQL。SQLyog是一个全面的MySQL数据库管理工具,它可以提供开发人员在使用MySQL时所需的绝大部分功能:查询结果集合、查询分析器、服务器消息、表格数据、表格信息,查询历史等,它们都以标签的形式显示在界面上,开发人员只要点击鼠标即可。2.3.5 HTMLHTML,即Hypertext Marked Language,超文本标记语言,是一种用来制作超文本文档的简单标记语言。所谓超文本,就是指用HTML创建的文档中加入图片、声音、动画、视频等内容,并且可以实现从一个文件到另一个文件。HTML已经成为各种浏览器的通用标准,并独立于各种操作系统平台。自1990年一来,HTML一直被用作WWW的信息表示语言,是所有WEB应用程序的基础。本次毕设的前端显示模块的页面基础部分都涉及到HTML语言。2.3.6 JSPJSP即Java Server Pages,它通过将动态代码嵌入到静态的HTML代码中,从而产生动态的输出,通俗地说,JSP就是嵌入在HTML中的JAVA代码。JSP代码运行在服务器端,能够对客户端展现内容可以变化的网页文档,以及处理用户提交的表单数据。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。本次毕设的前端页面多处使用到了JSP代码。2.3.7 Javascript及Raphael绘图HTML标签语言只能定义内容的表现形式,而不具有逻辑性,不能与用户进行交互,而JavaScript可以丰富网页的的这一种功能,使网页应用更加丰富多彩。JavaScript虽然在名称上与Java语言比较接近,而实际上,JavaScript是一种运行于用户客户端的脚本语言,它是一种基于对象和事件驱动,并具有安全性的脚本语言。它内嵌于HTML文档中,与HTML超文本标记语言、Java脚本语言一起实现在一个Web页面中连接多个对象,与Web客户交互的功能,从而可以开发客户端的应用程序。Raphal是JavaScript的一个用于在页面上画动态矢量图的库。使用它,可以在定义好的Raphal画布上方便简单地绘制任意颜色、粗细的线段、方块等多种多样的图形。Raphal以WSC制定的SVG(可缩放矢量图形)为作图的基础,也就是说,采用Raphal绘制的每一个图形都是一个DOM对象,所以还可以对这些图形添加需要的触发事件。本次毕设中,需要在Web界面上展示当前网络信息,以动态线段代表网络连接,并且鼠标通过悬停、点击等操作触发信息展示响应,Raphal很好地满足了这个需求。2.3.8 AJAXAJAX即“Asynchronous JavaScript and XML”异步JavaScript和XML,是指一种创建交互式网页应用的网页开发技术。通过 AJAX,JavaScript 可使用 JavaScript 的 XMLHttpRequest 对象来直接与服务器进行通信,使JavaScript 可在不重载页面的情况与 Web 服务器交换数据,这样就可使网页从服务器请求少量的信息,而不是整个页面。本次毕设中动态显示网络信息的页面就用到了AJAX技术,使得Web服务器可以即时获得最新的网络信息。第三章 OpenFlow可视化管理系统需求分析与总体设计233.1 OpenFlow可视化管理系统需求分析网络管理系统是一个软硬件结合以软件为主的分布式网络应用系统,其目的是管理网络,使网络高效正常运行。新型的网络交换技术是与高效的网络管理系统密不可分的。采用B/S架构实现的网络管理系统可以使网络管理人员使用任何一台联网的PC,无论其系统如何,都可以通过浏览器来访问服务器端的资源。当前部署OpenFlow技术的网络管理系统通常比较复杂。已有一些相关研究对B/S架构的OpenFlow网络管理系统进行了尝试,但这些研究目前应用并不广泛,且在其系统中必须通过OpenFlow网络中的特定Controller来实现信息的获取。利用本项目组开发的独立于Controller的控制程序OFCP,作为OpenFlow系统的控制程序,(通过OFCP可实现与Controller近似的,对OpenFlow 交换机的控制及信息获取的功能)可以实现B/S架构的可视化管理系统。因此,本次毕设的目的就是使用OFCP控制程序,在PMS系统上,实现B/S架构的OpenFlow可视化管理系统。在此系统上,用户可以查看当前网络的拓扑结构,并查询网络中任意两节点间的最短路径。如果两节点间最短路径中包含OpenFlow隧道,可视化系统可以再拓扑图中以特殊标识显示出来,并以文字信息的方式提示OpenFlow隧道部分。总的来说,本产品的主要功能性需求为OF Switch工作信息的处理,对以上需求应遵循的主要原则是易于网管人员对数据的获取。功能需求分类如表3-1所示:功能类别功能名称描述OF 交换机工作信息的处理OF 交换机工作信息的存储将PMA上传的OFCP收集的OF 交换机工作信息解析并存储至数据库。OF 交换机数据流表的处理与显示提取OF 交换机的数据流表,并处理为易于识别的形式显示在网页上。路由表与数据流表混合的节点间最短路径的处理路由表与数据流表混合的节点间最短路径的计算解析数据流表与路由表,拼接出混合的节点间最短路径。路由表与数据流表混合的节点间最短路径的显示将上述拼接出的最短路径以易于识别的形式显示在网页上。表 31 功能需求分类表3.2 OpenFlow可视化管理系统总体设计由OpenFlow工作信息可视化系统的需求分析说明可见,系统的构成可以分为两个主要部分:1. OpenFlow工作信息解析与存储模块,2. OpenFlow工作信息前端展示模块。系统总体结构设计图如图3-1所示。图3-1 OpenFlow可视化管理系统总体结构示意图OpenFlow信息解析与存储模块位于策略通信服务器(PMS)上,负责接收PMA传递的数据包,数据包头为根据PMA的规定定义的OpenFlow数据流表数据包类型,内容为根据OFCP的规定定义的OpenFlow工作数据流表的数据包。PMS接收到PMA传递的报文,OpenFlow工作信息解析与存储模块首先对报文进行解析,提取其中报文类型、版本、长度、内容等信息,然后根据报文类型,对收到的报文进行处理,为报文内容分配存储空间、发出系统反馈信息、更新系统日志,并调用数据库访问接口,将数据存入OF工作信息数据库。用户选择载入页面以后,OF工作信息前端展示模块开始在用户浏览器中载入网页标记信息,例如网页刷新间隔选项,并绘制画布及背景。为获取此时网络的连接状态,前端展示模块向相应的Servlet发送XmlHttpRequest请求,从数据库中读取网络连接信息、路由信息、节点位置信息等,并通过将读取到的数据转换成数组形式,方便作图时使用;然后调用绘图方法,根据路由节点位置信息、网络连接信息绘制当前网络拓扑图。至此页面载入完毕,用户提交新的请求后,前端展示模块会根据需求显示隐藏的信息或重新载入页面。第四章 系统设计与实现本章将对上一章提及的OpenFlow信息解析与存储模块及OpenFlow工作信息前端展示模块做详细的设计说明。44.1 OpenFlow信息解析与存储模块设计方案..1 OpenFlow信息解析与存储模块整体介绍图 4-1 OpenFlow信息解析与存储模块整体流程图PMS接收到PMA传递的报文,首先对报文进行解析,提取其中报文类型、版本、长度、内容等信息。PMS根据报文类型,对收到的报文进行处理,为报文内容分配存储空间,发出系统反馈信息、更新系统日志,并调用数据库访问接口,将数据存入OP工作信息数据库。与OpenFlow信息解析与存储模块直接相关的模块是PMS的JDBC模块、sql数据库。JDBC模块从PMA上传的报文中解析出OpenFlow的工作信息,作为sql数据库的输入,Web服务器通过JDBC模块调用sql数据库中的工作信息展示到Web前段页面。4.1.2 模块内部结构和处理流程本模块共包括报文解析、报文处理、数据库访问接口三个子功能项。123..2.1 报文解析图4-2 报文解析流程图工作原理:PMS首先判别PMA是否处于托管状态,PMA不在托管状态下时,读取报文包头,再读取报文内容,输出报文信息,包括:报文类型、报文版本、代理ID、报文长度、报文内容。对报文类型号进行判断,如果报文OpenFlow信息类型,则反馈“接收OpenFlow信息成功”,创建log。(此部分属于PMS系统原有机制,OpenFlow可视化管理系统中仅在此部分中添加了表示OpenFlow工作信息的报文类型) 报文处理图4-3 报文处理流程图工作原理:将发送OpenFlow信息的代理更新,若代理列表中不存在此代理则添加,否则刷新此代理的最近活动记录。判断XML报文是否为空,若不为空,则解析上传的流信息,将内容插入到数据库相关表格中。 数据库设计完成OpenFlow工作信息的解析与存储,需要在数据库中新建一张表,用来存储OpenFlow的流表信息、上传id、上传时间、路由id等。该表取名为T_OPENFLOW_INFO。如表4-1所示。TABLET_OPENFLOW_INFOPurpose存储OpenFlow工作信息Primary Keyrouter_idForeign keyIndexNoColumnNULLIlluminationNameTypeLength1flowtableString32NO报文内容2upload_idint32NO上传该条信息的上传id3upload_timeString32NO上传该条信息的时间4router_idint32NO路由器id表4-1 OpenFlow工作信息数据库设计4.1.3 各子模块函数设计说明本部分介绍OpenFlow工作信息解析与存储模块中的各个功能函数的详细设计方案。OpenFlow信息解析与存储模块报文解析、报文处理、数据库访问接口三个子功能,下面将分别介绍这些子功能实现的具体函数,并介绍此模块中涉及到的全局变量。.3.1 报文解析子模块PMS判别PMA是否处于托管状态,读取报文包头,再读取报文内容,输出报文信息,包括:报文类型、报文版本、代理ID、报文长度、报文内容。对报文类型进行判断,如果报文OpenFlow信息类型,则反馈“接收OpenFlow信息成功”,创建log。其中“PMS判别PMA是否处于托管状态,读取报文包头,读取报文内容,对报文类型进行判断”均在PMS主函数中已建的EchoProtocol()函数中完成;“反馈”接收OpenFlow信息成功,创建log。”在新定义的函数handleOpenFlowInfo()中完成。 OpenFlow工作信息解析处理函数(1) OpenFlow工作信息解析函数函数定义:private boolean handleOpenFlowInfo()功能描述:该函数被handleEchoClient()函数调用,当handleEchoClient()判别报文类型为“OF工作信息类型”时,调用handleOpenFlowInfo()函数,解析XML文件,并将解析出的路由信息、流表信息等传递给数据库访问接口函数。反馈“接收OpenFlow信息成功”,创建log。输入项、输出项:布尔型函数,无输入项;输出项为函数执行成功与否。流程逻辑:图 4-4 OpenFlow工作信息解析函数流程图(2) OpenFlow工作信息处理函数函数定义:public TOpenFlowInfo TOpenFlowInfoInsert(String flowtable )功能描述:该函数继承TableInsert基类,完成把流表信息、上传ID、上传时间等插入数据库接口函数的操作。输入项、输出项:输入项为字符串型的流表信息。由于上传ID、路由ID均在TableInsert的其他插入信息的函数中赋值,上传时间通过调用查找历史记录函数(TUploadHistoryInsert)从服务器上获得,因此只需流表信息一项输入项;输出项为函数执行成功与否。流程逻辑:图 4-5 OpenFlow工作信息处理函数流程图 数据库访问接口(1) 对象定义:public class TOpenFlowInfo()(2) 功能描述:该函数自TableOperation基类,完成服务器调用数据库数据的操作,包括设置数据、插入数据、获取数据、更新数据、删除数据等。(3) 子函数概述:a) 输出数据:public void print()功能描述:展示数据库中OpenFlow流表信息。b) 删除数据:public boolean delete()功能描述:删除数据库中某一项c) 检索数据名称:getSpecifiedItemInfo()功能描述:按照某一特殊项检索数据库d) 检索数据数量:public int getSpecifiedItemNum(String columnname)功能描述:按照某一项的数据数量检索数据库e) 插入数据:public boolean insert()功能描述:在数据库中插入数据f) 刷新数据:public boolean update()功能描述:在数据库中刷新数据g) 刷新插入判别数据:public boolean insertOrUpdate()功能描述:判断数据库中是否已有数据,如果没有数据则插入数据;如已有数据,则刷新数据。h) 设置数据:public Integer getUploadId()功能描述:获取上传ID 全局变量说明(1) TYPE_PMA_OFINFO,表示发送含OpenFlow工作信息报文的报文类型。(2) 声明格式:extern int TYPE_PMA_OFINFO(3) 取值:暂空,表示OpenFlow的工作信息。 普通变量声明a) flowtable,表示OpenFlow流表;b) upload_id,表示上传信息;c) upload_time,表示上传时间;d) router_id,表示路由ID;e) logger,表示工作日志。上述变量的声明格式如下:private String flowtable;private Integer upload_id;private String upload_time;private Integer router_id;private Logger logger = null。4.2 OpenFlow信息前端展示模块设计方案(1)4.2.1 OpenFlow信息前端展示模块整体介绍图 4-6 OpenFlow信息前端展示模块整体流程图用户选择载入此页面以后,开始在用户浏览器中载入网页标记信息,例如网页刷新间隔选项,并绘制画布;为获取此时网络的连接状态,向相应的Servlet发送XmlHttpRequest请求,从数据库中读取网络连接信息、路由信息、节点位置信息等,并通过运行javascript代码将读取到的数据转换成数组形式,方便作图时使用;然后调用Raphal库语句,根据路由节点位置信息、网络连接信息绘制当前网络拓扑图。至此页面载入完毕,用户提交新的请求后,会根据需求显示隐藏信息或重新载入页面。图4-7 用户触发事件流程图用户选择要查看的两点间的路径后,先判断两节点间是否含有OF隧道。如果含有OF隧道,就在页面中文字显示路径信息及所含隧道信息,在拓扑图中将此路径显示为蓝色,并对隧道部分做加粗处理;如果两节点间不包含隧道,则调用最短路径查询函数,文字显示两点间最短路径信息,并在拓扑图中将两点间路径正常显示。此外,用户鼠标在路由器上进行悬停时,触发程序显示:OpenFlow流表工作信息。4.2.2 模块内部结构和处理流程本模块包括数据库读取并转换、绘制网络拓扑图、文字显示链路信息三个子功能。.2.1 数据库读取并转换工作原理:PMWEB调用相应的数据库接口,读取数据库中存储的链接矩阵信息、路由坐标信息、OF路径信息。 绘制网络拓扑图工作原理:首先在页面中绘制画布,用于承载网络拓扑图;将从数据库中取到的信息转化为绘图函数可以直接调用的形式,再根据链接矩阵信

温馨提示

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

评论

0/150

提交评论