技术领域
本发明涉及一种虚拟实验平台,特别是一种在线路由交换虚拟实验平台。
背景技术
近年来,MOOC、SPOC等形式的在线开放课程教学发展迅速,在线教学已经成为高等学校教学的重要组成部分。很多学校开设了网络工程类的在线开放课程,学生可以通过观看教学微视频和教学课件,完成在线测试和作业等方式进行课程的学习;但是,目前,网络工程类在线开放课程存在重理论教学,缺乏在线实验教学平台的问题。
发明内容
本发明所要解决的技术问题是针对现有技术的不足,提供一种能够为学生构建虚拟的路由交换实验环境,完成路由交换类实验任务的在线路由交换虚拟实验平台。
本发明所要解决的技术问题是通过以下的技术方案来实现的。本发明是一种在线路由交换虚拟实验平台,该虚拟实验平台为基于Web的在线路由交换虚拟实验平台,平台前端使用Angular构建,平台后端使用SpringBoot构建,平台数据库采用MySql,平台前端和后端使用AJAX作为通信方式;在该虚拟实验平台上设置有网络拓扑编辑模块,在网络拓扑编辑模块上设置有设备区和编辑区,用户可以通过拖拽设备区的设备到编辑区来创建网络设备,然后连接网络线缆,构建拓扑结构,并对网络设备通过命令来切换各种模式,利用命令来打开关闭网络设备上的部分接口,用户还可以通过手动配置命令来实现网络设备之间的连通,完成路由交换的实验任务。
本发明所要解决的技术问题还可以通过以下的技术方案来进一步实现,对于以上所述的在线路由交换虚拟实验平台,在进行拓扑结构绘制时,采用了HTML 5 Drag和drop拖放以及Canvas画布元素,将固定的图片拖放到画布中,同时根据鼠标事件,来判断它在画布中的位置并绘制出来;当鼠标点击并移动画布中设备图片时,获取鼠标坐标,清除画布,并重新绘制图片;而当需要连线时,鼠标点击第一个节点,获取该节点的坐标,随后点击第二个节点,获取第二个节点的坐标,根据需要计算线缆所经过的路劲,在节点间绘制连线;连线内置信息记录起始节点的索引和末端节点的索引,画布以每秒500帧的速度重绘画布。
本发明所要解决的技术问题还可以通过以下的技术方案来进一步实现,对于以上所述的在线路由交换虚拟实验平台,采取Canvas离屏渲染的方式在内存中创建一个canvas元素,绘制想要画得图形,通过canvas API drawImage方法绘制到页面canvas上去显示。
本发明所要解决的技术问题还可以通过以下的技术方案来进一步实现,对于以上所述的在线路由交换虚拟实验平台,为每个设备对象内置config属性,不同设备的config不同。
本发明所要解决的技术问题还可以通过以下的技术方案来进一步实现,对于以上所述的在线路由交换虚拟实验平台,在进行仿真命令设计时,用一个HashMap来存储不同的设备对应的命令块,key为用户当前所处模式,value则是该模式下对应的模式命令块;在用tab自动补全时,在模式-模式命令块对应的HashMap中的Value选用ArrayList来实现将当前网络设备上当前模式下所有符合的命令依次显示,其泛型选Object型。
本发明所要解决的技术问题还可以通过以下的技术方案来进一步实现,对于以上所述的在线路由交换虚拟实验平台,设备间的路由交换算法为,交换机节点以交换机为基础设计了8个fastethernet接口和2个Gigabitethernet接口;路由器节点以路由器为基础设计了4个局域网端口和2广域网接口;主机节点主要以window10操作系统为基础模拟命令窗口。
本发明所要解决的技术问题还可以通过以下的技术方案来进一步实现,对于以上所述的在线路由交换虚拟实验平台,设计路由表,在路由表中设计三种类型的路由表记录,包括直连路由、静态路由和动态路由,直连路由由路由器根据链路状态自动获取;静态路由由管理员手动输入命令配置;动态路由在开启相关协议后自动生成;三种路由的公共字段包括目标网段、子网掩码、下一跳地址、类型。
本发明所要解决的技术问题还可以通过以下的技术方案来进一步实现,对于以上所述的在线路由交换虚拟实验平台,在设备中内置了vlan表,管理员可以创建vlan表项,并为端口选择trunk或者aceess模式并加入某个vlan中;内置一个定时器,在开启路由器rip路由后,每30秒执行一次,每次执行交换周围路由表信息,自动生成动态路由记录;并采用dfs深度优先算法模拟网络通信中的报文发送,经过不同的设备需要依照设备的配置以及特性决定是否放行和哪个端口发送。
与现有技术相比,本发明作为一个基于Web的在线路由交换虚拟实验平台,学生可以在这个在线实验平台上构建虚拟的路由交换实验环境,完成路由交换类的实验任务;其主要面向学习计算机网络课程的学生,服务于计算机网络实验课程的教学,使计算机网络的实验不再受时空的限制、不再受昂贵设备不足的限制,保障了实验教学的质量,教师和学生只要在平台上注册一个账户,无论何时、何地、何种环境都可以进入独属于自己的虚拟实验平台,创建不同的拓扑实验,完成相应的实验内容,同时在这个平台上,同学们可以创建或者加入实验小组,实时协作、团队完成实验,也可以通过下载配置文件或辅助链接的方式,将属于自己的实验结果分享给他人。
附图说明
图1为本发明的用户系统层次图;
图2为本发明的网络拓扑系统层次图;
图3为本发明的用户系统流程图;
图4为本发明的网络拓扑系统流程图;
图5为本发明的加载用户列表流程图;
图6为本发明的网络拓扑搭建流程图;
图7为本发明的命令配置流程图;
图8为本发明的系统E-R图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参照图1-8,一种在线路由交换虚拟实验平台,为一个基于Web的在线路由交换虚拟实验平台,平台前端使用Angular构建,后端使用SpringBoot构建,数据库采用MySql,前后端使用AJAX作为通信方式;师生可以在这个在线实验平台上构建虚拟的路由交换实验环境,完成路由交换类的实验任务;
该虚拟实验平台的具体功能有:
1、构建网络拓扑
教师和学生可以在这个在线实验平台上创建路由器、交换机、计算机等网络设备,选择相应端口连接双绞线、串口线等网络线缆,从而构建网络拓扑;
2、仿真命令配置
模拟锐捷设备构建命令词库。通过命令来切换网络设备的各种模式,利用命令来打开关闭网络设备上的相应接口,配置接口的ip地址。最终,用户可以通过手动配置命令来实现网络设备之间的连通;
3、自主学习实践
学生通过实验指导,自由创建不同的网络拓扑文件,自主完成实验。实践学习理论;
4、小组协作
可以通过本平台创建小组或加入其它的小组,实时在线协作,共同完成实验内容。
本申请的设计思路:
一、系统设计思路
作为一个基于Web的在线路由交换虚拟实验平台,其主要面向学习计算机网络课程的学生,服务于计算机网络实验课程的教学;使计算机网络的实验不再受时空的限制、不再受昂贵设备不足的限制,保障了实验教学的质量;教师和学生只要在平台上注册一个账户,无论何时、何地、何种环境都可以进入独属于自己的虚拟实验平台,创建不同的拓扑实验,完成相应的实验内容;同时在这个平台上,同学们可以创建或者加入实验小组,实时协作、团队完成实验,也可以通过下载配置文件或辅助链接的方式,将属于自己的实验结果分享给他人!
二、路由拓扑图设计思路
如何将一张设备图片拖放到画布的指定位置建立一个网络设备,并且此后可以在画布范围内随意拖动它,采用了HTML 5 Drag 和 drop拖放以及Canvas画布元素,将固定的图片拖放到画布中,同时根据鼠标事件,来判断它在画布中的位置并绘制出来;当鼠标点击并移动画布中设备图片时,获取鼠标坐标,清除画布,并重新绘制图片;而当需要连线时,鼠标点击第一个节点,获取该节点的坐标,随后点击第二个节点,获取第二个节点的坐标,根据需要计算线缆所经过的路劲,在节点间绘制连线;连线内置信息记录起始节点的索引和末端节点的索引,画布以每秒500帧的速度重绘画布;为了优化canvas绘图性能,在某些地方例如铅笔绘图采取了Canvas离屏渲染的方式在内存中创建一个canvas元素,绘制想要画得图形,通过canvas API drawImage方法绘制到页面canvas上去显示;
但是在计算机网络中不同类型的设备拥有不同的属性和配置,这就需要区分开这些设备,为他们设计相应的配置,为每个设备对象内置config属性,不同设备的config不同,交换机节点以锐捷RG-NBS1809C-P型号为基础设计了8个fastethernet接口和2个Gigabitethernet接口;路由器以锐捷RG-NBR1200G型号路由器为基础设计了4个局域网端口和2广域网接口;主机节点主要以window10操作系统为基础设计了一个对外接口;同时,为了实现设备间路由交换,在路由表中设计了三种类型的路由表记录包括直连路由、静态路由和动态路由;直连路由由路由器根据链路状态自动获取,静态路由由管理员手动输入命令配置、动态路由在开启相关协议后自动生成;三种路由的公共字段包括目标网段、子网掩码、下一跳地址、类型,也内置了vlan表,管理员可以创建vlan表项,并为端口选择trunk或者aceess模式并加入某个vlan中;
三、仿真命令设计思路
由于网络设备中的命令较多,搭配较为繁琐,所以在选取存储的数据结构上尤为重要,首先,用一个HashMap来存储不同的设备对应的命令块,key、value的形式更能体现设备与命令块之间的对应关系,HashMap内部有自动扩容机制,内置了负载因子,保证了系统的可扩展性;在将设备与命令块之间的对应存储好之后,则要细分命令块中不同的网络设备在不同模式下所对应的的模式命令块,需要是用户在不同的模式下,进行自动补全或者帮助查看到的应该只能是当前模式下支持的命令,所以这一设计尤为重要,利用一个HashMap来承载,key为用户当前所处模式,value则是该模式下对应的模式命令块;
按照以上思路,需求能够初步的解决,但是如何在用户用tab自动补全时将当前网络设备上当前模式下所有符合的命令依次显示,最终考虑在模式-模式命令块对应的HashMap中的Value选用ArrayList来实现,而为了以后的拓展,其泛型选Object型。其实这里使用HashMap可能会更加灵活,不过考虑到HashMap的底层实现是链表,对于链表,其增删操作效率较高,而查询效率较低;只适合不需要频繁访问的网络设备与命令块对应关系和模式与模式命令对应关系;而选用ArrayList则是考虑到其特性,ArrayList底层是数组实现,既然是数组,其迭代查询效率较高,增删效率较低,较适合频繁查询的模式命令块;
四、路由交换算法设计方案
路由器和交换机的配置命令主要参照锐捷设备设计,其中交换机节点以锐捷RG-NBS1809C-P型号为基础设计了8个fastethernet接口和2个Gigabitethernet接口;路由器以锐捷RG-NBR1200G型号路由器为基础设计了4个局域网端口和2广域网接口;主机节点主要以window10操作系统为基础模拟命令窗口,可以进行连通性测试;
依照路由器路由的相关知识,在路由表中设计了三种类型的路由表记录包括直连路由、静态路由和动态路由;直连路由由路由器根据链路状态自动获取,静态路由由管理员手动输入命令配置、动态路由在开启相关协议后自动生成;三种路由的公共字段包括目标网段、子网掩码、下一跳地址、类型;
在设备中内置了vlan表,管理员可以创建vlan表项,并为端口选择trunk或者aceess模式并加入某个vlan中;
同时内置了一个定时器,在开启路由器rip路由后,每30秒执行一次,每次执行交换周围路由表信息,自动生成动态路由记录;
很多连通性测试命令需要搜索整个拓扑图,采用dfs深度优先算法模拟网络通信中的报文发送,经过不同的设备需要依照设备的配置以及特性决定是否放行和哪个端口发送。
本申请的详细设计:
一、该虚拟实验平台包括用户管理系统和网络拓扑编辑器;
(1)用户管理系统描述
用户登录系统后,可以在个人中心的我的文件页面查看所有已经创建并且保存的网络拓扑信息的快照;在与我协作页面创建小组或加入小组共同完成实验;在我的实验页面完成教师从后台发布的实验;在实验工具中可以使用一些基础的实验工具;在回收站中可以恢复或者彻底删除之前删除的拓扑文件;
(2)网络拓扑编辑器描述
用户可以通过拖拽设备区的设备到编辑区,来创建路由器、交换机、计算机等网络设备,连接双绞线、串口线等网络线缆,进而构建拓扑结构,可以对网络设备通过命令来切换各种模式,利用命令来打开关闭网络设备上的部分接口,并且用户可以通过手动配置命令来实现网络设备之间的连通,完成路由交换的实验任务。
二、关键算法和技术
(1)Html5 Canvas2D绘图
不同于传统的Flash动画,平台采用了HTML 5 Drag 和 drop拖放事件以及Canvas画布元素,将固定的图片拖放到画布中,同时根据鼠标事件,来判断它在画布中的位置并绘制出来;当鼠标点击并移动画布中设备图片时,获取鼠标坐标,清除画布,并重新绘制图片;以每秒500帧的速度重绘画布。
(2)json数据的存储以及压缩算法
拓扑配置信息以json的数据格式存储在前端,但是由于json中”key”:”value”特殊格式导致在作为一串字符串传输时”会出现异常,所以在前台得先对双引号进行转义操作,后台接收到之后,依然需要对一些数据库敏感字符进行转义,在用户访问该网络拓扑配置信息时,则需要在后台先进性逆转义,发送到前端时要对配置信息先进性逆转义和部分字符的替换,然后再将配置信息转化成json对象,再利用JavaScript对其进行渲染。
(3)仿真命令设计
首先设备命令是存放在三层嵌套的数据结构之中,Java程序语言表示为:
HashMap<网络设备名称,HashMap<模式名称,ArrayList<命令对象>>>
我们将每一个网络设备都设计为一个实体对象,其属性包含了端口、路由表、VLAN等各种属性,每配置完一条设备命令,将其属性做对应的改变。
(4)路由交换算法
路由交换算法用到了包括图的DFS深度搜索算法、距离向量算法、IP地址计算算法、子网掩码计算与转化算法、CIDR计算等算法来实现该部分功能;采用dfs深度优先算法是为了模拟网络通信中的报文发送过程;经过不同的设备需要依照设备的配置以及特性决定是否放行和哪个端口发送;距离向量算法是rip协议的重要算法;内置了一个定时器,在开启路由器rip路由后,每30秒执行一次,每次执行交换周围路由表信息,自动生成动态路由记录;
(5)命令词库设计
用一个HashMap来存储不同的设备对应的命令块,key、value的形式更能体现设备与命令块之间的对应关系,HashMap内部有自动扩容机制,内置了负载因子,保证了系统的可扩展性;在将设备与命令块之间的对应存储好之后,则要细分命令块中不同的网络设备在不同模式下所对应的的模式命令块,需要是用户在不同的模式下,进行自动补全或者帮助查看到的应该只能是当前模式下支持的命令,所以这一设计尤为重要,选用一个HashMap来承载,key为用户当前所处模式,value则是该模式下对应的模式命令块;
同时考虑在模式-模式命令块对应的HashMap中的Value选用ArrayList来实现,而为了以后的拓展,其泛型选Object型;其实这里使用HashMap可能会更加灵活,不过考虑到HashMap的底层实现是链表,对于链表,其增删操作效率较高,而查询效率较低。只适合不需要频繁访问的网络设备与命令块对应关系和模式与模式命令对应关系;而选用ArrayList则是考虑到其特性,ArrayList底层是数组实现,既然是数组,其迭代查询效率较高,增删效率较低,较适合频繁查询的模式命令块。
(6)构建计算机网络通信模型,实现路由交换算法
a.路由器、交换机、主机节点:路由器和交换机的配置命令主要参照锐捷设备设计,其中交换机节点以锐捷RG-NBS1809C-P型号为基础设计了8个fastethernet接口和2个Gigabitethernet接口;路由器以锐捷RG-NBR1200G型号路由器为基础设计了4个局域网端口和2广域网接口;主机节点主要以window10操作系统为基础模拟命令窗口,可以进行连通性测试;
b.路由表:依照路由器路由的相关知识,在路由表中设计了三种类型的路由表记录包括直连路由、静态路由和动态路由;直连路由由路由器根据链路状态自动获取,静态路由由管理员手动输入命令配置、动态路由在开启相关协议后自动生成;三种路由的公共字段包括目标网段、子网掩码、下一跳地址、类型;
c:vlan:在设备中内置了vlan表,管理员可以创建vlan表项,并为端口选择trunk或者aceess模式并加入某个vlan中;
d:rip协议实现:参照计算机网络中的rip协议,内置了一个定时器,在开启路由器rip路由后,每30秒执行一次,每次执行交换周围路由表信息,自动生成动态路由记录;
e:dfs深度优先算法:很多连通性测试命令需要搜索整个拓扑图,我们采用dfs深度优先算法模拟网络通信中的报文发送;经过不同的设备需要依照设备的配置以及特性决定是否放行和哪个端口发送;
(7)ajax异步传输json:
Ajax异步通信具有不需要插件支持、用户体验极佳、提示Web程序性能;减轻服务器与宽带的负担等特性,而JSON作为一种数据传输格式,JSON与XML很相似,但更加灵巧;且不需要从服务器端发送含有特点内容类型的首部消息;将二者结合,作为前后端交互的主要方式,设计拓扑结构json的序列化与反序列化算法,使系统操作更加流畅、信息更新及时,提高了用户体验;
(8)右键菜单与辅助工具栏功能的实现
为辅助绘制拓扑结构,增设了很多辅助功能,如放大、缩小、旋转、辅助线、参考线、铅笔涂鸦等功能,也在画布中根据鼠标右击事件,在不同的地方弹出相应的功能菜单。
机译: 通过外部或第三方保险承保人开发和编码的用于保险报价和保险供应目的的应用程序接口(API)或小部件,将消费者与企业和私人都带到第三方站点,或者引用第三方站点或处理保险报价或通过澳大利亚范围内的任何一种在线平台进行配置,以向消费资产所有者提供其资产在澳大利亚范围内的任何一种在线平台上的上市或消费者资产租用者从澳大利亚范围内的任何一种在线平台上租借物品的条件。
机译: 虚拟实验室辅助平台
机译: 虚拟实验室辅助平台