1. 引言
当今社会,互联网技术对人们的生活产生了更为广泛的影响。作为讲述互联网原理的《计算机网络》课程,是所有高校计算机相关专业的专业核心课程,在整个教学体系中占据非常重要的地位。
《计算机网络》课程内容包括网络基本概念、网络体系结构模型、网络各层主要协议分析等。课程具有以下3个特点:1) 学科基础涉及面广。计算机网络是一门综合性很强的交叉学科,涉及计算机、通信、电子、控制等多个学科领域,理论性强,概念抽象。2) 学科应用性强,因此该课程对学生的实践能力提出了较高的要求。3) 前沿性强,知识更新快。教学内容包含大量错综复杂、彼此交织的概念与技术,尤其是通信与网络技术发展迅速,主流的网络技术和网络设备在不断地更新。可以说计算机网络是一门理论性与实践性都很强的课程。
作为计算机专业的基础课,计算机网络涉及到了诸多的方面,比如:企业异地组网、大型BGP的管理,有非常多不同种类的网络设备以及拓扑的设计、配置与调试。本文提出结合知识图谱教学,基于知识图谱来重新构建计算机网络的课程知识体系。同时在云计算平台部署改进的GNS3虚拟仿真平台,摆脱了专业实验设备、技术和环境陈旧,使得计算机网络相关课程的教学内容和水平较目前大幅提高,教学和市场最新设备的模拟可以实时跟进,满足大数据时代下对该专业人才的技术需求。
2. 当前教学存在的问题
在计算机网络这类需要实践教学的课程中,传统的教学模式难以保证学生在这方面学习知识的质和量 [1],文献 [1] 说明了网络实验教学作为教学体系的一个重要教学环节,是培养学生实践能力和创新能力的重要手段。针对学习知识的质量问题,部分学校引入思科CCNA课程 [2] 体系来建立一个与业界跟进的教学体系,文献 [2] 紧贴行业发展前沿,使学生学有所用。CCNA课程中一个重要部分就是每个单元后有基于Packet Tracer的虚拟仿真实验,可以增强学生的实际操作能力。从对于Packet Tracer教学的研究 [3] 以及笔者学校的实际教学情况来看,文献 [3] 给出利用Packet Tracer平台制作实验课素材的方法和实践,可以使用思科Packet Tracer的C2691镜像进行仿真实验,提高学生对于基础教科书内容的理解。但是C2691这样的老设备IPv6的支持有限,也无法仿真IPsec over GRE等常见异地组网案例,导致很多大学的教学和业界主流技术、设备脱节。随着华为等国产设备的导入、以及5G等无线通信内容的普及,使得思科Packet Tracer平台在实验教学中有一定的局限性。
2.1. 学生在本地端的实验环境参差不齐
学生课下在笔记本电脑上运行仿真实验的完成度也不是很乐观,部分功能可能因为不同的系统环境受限,提交课程作业的进度参差不齐,未来增加实验内容也会受限。以GNS3中仿真华为CE12800为例:一台设备需要2G以上的内存,一个实验需要多个交换机,学生电脑的内存可能不够。
2.2. 实验的设备平台较少
由于实验的设备跟不上发展,目前的趋势是虚拟仿真实验代替实际设备,由于实际的设备不一定更新、成本比较高。受限于教材以及实验平台,对分布式计算集群、云计算的服务器网络、无线网络等新技术的实验不足。文献 [4] 通过结合云计算技术,改进实验室教学与管理水平,构建新型的实验平台和教学体系,能够更好地服务高校进行人才培养。目前虚拟仿真软件也随着不断的升级可以兼容更多的路由平台,稍加改动就可以在云计算平台快速部署 [4]。
2.3. 与应用层配置的结合不够
在数据中心的运维中,往往计算机网络的配置与LINUX之类的系统、应用配置息息相关。比如均衡负载器、防火墙、IDS设备的使用,传统的平台都没有模拟和实践的能力。利用GNS3的强拓展性,可以使用Docker来组合相关的微服务模块,提高整体的运维能力
2.4. 无法确保按指定要求完成实验、难以避免抄袭
比如以下的实验要求:A-B-C使用OSPF来配置联通,然后以A-C Ping通作为检验标准。那么学生可以偷懒,直接使用A-C配置静态路由表,或是DHCP等简易手段来应付作业。
同时也难以杜绝偷懒学生的抄袭现象。传统的实验方式是每章布置实验内容,要求学生完成,书写实验报告(实验心得或总结等)。由于提交的是电子材料,有些偷懒的同学可以拷贝其他同学的作业改名后提交。
3. 虚拟仿真的改进思路
针对传统计算机网络实践教学存在的问题,利用GNS3为基础框架,同时兼容QEMU、Dynamips仿真工具,作为计算机网络实验的基础平台。同时引入判题的机制,使用知识图谱组织实验,这样可以很好地解决传统教学的弊端。
3.1. 知识图谱的引入
由于知识图谱的引入,传统的以Packet Tracer为单一主体的框架势必需要做出一些改变。即从以仿真软件为主体的框架,转变为知识图谱为主体,如图1所示,从而构建一个集学情分析、课堂教学、仿真判题的全面的教学框架,如图2所示。

Figure 1. Diagram of transmission layer knowledge graph
图1. 传输层知识图谱实验示例图

Figure 2. Functions provided by the knowledge graph
图2. 知识图谱提供的功能
目前绝大多数学校由于课程的限制,都是单独下发的实验指导书 [3]。根据实际课程的情况,这样的课程模式不利于需要综合运用的实验,往往学生都难以完成最后的综合实验。
通过使用知识图谱这种方式,教师可以更加精准的刻画学生知识掌握情况,并且更加有效的组织手头现有的资源。进而可以调整是否要调整总体的教学进度,是否需要增加用于学生进一步掌握的辅助教学课程,对于学生学习的路径进行规划;系统可以根据知识点的关联程度,对学习的资源进行个性化的推荐。
除了知识图谱在教学系统中能起到的监测作用之外,教师还可以快速根据知识点来创建复杂的拓补实验,使用类似搭积木的形式来组合多个不同的实验——比如在IPsec实验中的两端分别加入两个使用RIP协议的内网,来提高学生对于不同协议结合、交互的应用能力。
3.2. 仿真软件的改进
目前所有的实验课的课程和实验内容都储存在用户的本地PC机,用户本地计算机经常出现故障或者兼容性问题,学生往往在软件平台的安装和配置上浪费很多时间。
使用云计算的平台,采用S3对象存储的技术将实验教学的内容保存在云端上,通过分布式的文件存储系统,可以保证数据的安全性和稳定性。此外使用KVM或者Docker镜像的模式在云端部署虚拟仿真软件的控制端,不仅保证了实验环境的稳定,也支持随时随地访问和下载实验资源。
GNS3已经提供了用于单机部署的多种虚拟机镜像。其本身使用Python的Restful接口模式,进一步方便了加以改进,实现在云端大规模集群部署。使用云部署的形式可以利用目前服务器上巨量的内存和CPU资源,实现虚拟仿真实验来代替实际设备。相比较固定的硬件配置,实体的网络设备的更新成本是非常高的。GNS3可以模拟很多设备,在有足够的通用硬件资源的情况下模拟大数据应用部署的场景,将非常多不同用途的仿真设备进行混合部署,来模拟一个真实的数据中心环境。
4. 仿真实验上云实践
4.1. 系统软件技术架构设计
计算机网络虚拟仿真实践的软件架构分为多层,如图3所示,有前端、展示层、微服务层、数据框架层、数据库层、以及运行环境。其中,前端和展示层负责组织向用户提供具体图形界面的工作、将用户的操作转换成具体的http请求发送给多个微服务后端;微服务层对前端发来的请求进行分发和处理,向数据框架层的不同应用进行CRUD相关的操作,以及对数据库详细业务的抽象封装;数据库和运行环境则由服务的提供方在部署应用时进行部署,由于使用KVM镜像作为底层的部署模式,当用户增加时可以动态扩容。整个软件系统的基本来源包括计算机网络的相关教材、各家设备提供商的官方文档、CCNA的教程。

Figure 3. System software technology architecture diagram
图3. 系统软件技术架构图
4.2. 知识图谱的搜索和推荐
知识图谱以固定的数据结构存在MySQL中,知识图谱是作为一个文档的组织和检索形式来辅助用户学习。笔者知识图谱的结构设计包括以下内容:知识实体、知识的内部词汇关系、实体的属性、知识实体之间的关系。
通过在MySQL使用合适的表结构来组织知识图谱的数据结构,可以减少使用Neo4J等非关系型数据库造成的维护难度。由于是根据实验来组织知识点,极少情况会出现需要查询2层以上的关系,将相关的知识点一次性查询返回,即便使用关系型数据库即可实现推荐的功能。
在搜索方面参考了多模态搜索 [5] 的系统设计,文献 [5] 针对信息检索设计了Inverse Cloze Task (ICT)、Body First Selection (BFS)、Wiki Link Prediction (WLP)三个Pre-train任务来提高模型的效果。首先处于安全性的考虑,针对输入的内容进行检测,如果有网络安全的风险,会进行记录并且上报。之后会在Milvus和Elastic Search两个数据库中进行查找。通过两者不同的权重来计算出综合的评分,根据综合的评分了进行排序,即加权结果排序。
4.3. 仿真平台的交互
由于使用了GNS3作为本课题的基础框架,虚拟仿真平台需要实现软件缺失的功能,本文在下述6个方面进行了时间探讨。
1) KVM部署GNS3控制端。目前使用了KVM来动态增加GNS3的控制平面。这里值得注意的是,KVM并没有DOCKER在部署上快速灵活,但是笔者多次尝试在Docker中运行QEMU和dynamips都客观存在一定的技术上层面上的问题,在未来的研究上希望可以解决。
2) GNS3-webui多用户的隔离。GNS3在设计之初没有考虑多用户不干扰的使用一个控制端的情况。笔者在整合GNS3到多用户的仿真平台时,针对WEBUI 学生账户之间的仿真输入操作做了拦截,进行留档,用于判题的相关操作。实现了基于GNS3的Project UUID隔离的多用户实时仿真,用户实验之间互相不干扰,实现了隔离用户之间的操作。
3) 消息队列限制请求速率。即使在云计算平台部署的情况下,短时间大量的设备启动依旧是不能接受的。这里需要使用Kafka等类似的消息队列,限制短时间内dynamips、QEMU等虚拟仿真设备启动请求。
4) 抓包分析。由于是集中部署的控制端,抓取的数据包文件并不在本地,传统使用WireShark的方法并不能凑效。文献 [6] 介绍WebShark开源,系统采用了WebShark这个开源的工具对wireshark进行了封装 [6],可以在浏览器中对网络的数据包进行查看和分析。
5) 与LINUX运维的结合。单纯的网络虚拟仿真实验内容内容单薄,综合实验设计的比较少,尤其是涉及到应用层一类的服务。GNS3平台中可以将网络设备与Docker实例连接,这个能力给予了Linux应用与计算机网络实验进一步结合的可能性。例如,基于这套平台笔者安排了haproxy均衡负载实验。这类实验和LINUX的课程有强关联,利用GNS3的强拓展性,提高整体的运维能力。
6) 判题系统。当前的判题系统笔者使用了Ping和端口Probe的方式来检查。笔者在未来希望实现基于路由表、NAT转换、ARP状态等一系列要求的综合判题模式。采集和存储学生的作答现阶段就通过采集日志的形式实现。
5. 总结
通过虚拟仿真实验平台,学生可以不受时间和地点限制,在一定范围内进行设计型、创新型、不易实施的实验,既满足了实验的灵活性和有效性的要求,又可减少实验成本。本文提出的使用知识图谱结合虚拟仿真平台的教学方案,通过结合云计算平台,改进实验教学与管理模式,建设一个全新的实验软件平台,可以提高学生对于实验的完成度。2021~2022学年的第一学期,作者所在教学班级100%的学生均完成了实验,通过对实验现象的验证从而达到加深对相关理论知识理解的教学目标。同时,可以让高校学术界与产业界结合,也给计算机应用学科有机结合提供了思路。如何进一步通过技术手段来改革计算机网络课程的教学模式,是未来研究的重点。