NetMagic平台在网络工程专业教学中的应用
2018-06-27逄德明彭立宏蔡志平
胡 罡,逄德明,彭立宏,蔡志平,徐 明
(国防科技大学 计算机学院,湖南 长沙 410073)
1 课程概述
路由与交换技术是工程技术类网络工程专业的限选课程。通过学习本课程,学员了解并掌握网络路由和交换的基本概念、工作原理等基础知识,了解并掌握交换机和路由器设计及实现的一系列关键技术,为今后从事网络设备设计与开发工作打下坚实的专业基础。
课程的基本理念是以工程认证为标准,以提高课程教学质量为目标,以创新课程设计和改革教学内容及教学方法为重点,坚持将知识、能力、素质融为一体,坚持教与学的良性互动,整体优化教学实施过程,切实突出学员学习的主体地位,充分发挥课程教学对实现人才培养目标的支撑作用,促进学员全面发展。
课程的设计思路以改革教学内容和教学方法为先导,将课程内容框架、课程内容安排、课堂教学、实验教学、课程评价等方面有机结合起来,充分体现本课程的先进性和创新性。课程的主线是交换机和路由器的设计与实现技术,以此贯穿整个教学过程。
1.1 课程目标
通过学习该课程,学员能够了解并掌握网络路由和交换的基本概念、工作原理以及交换机和路由器设计与实现的一系列关键技术,在此基础上把握计算机网络交换机和路由器的性能特点和要求,以利于开发适合网络系统的交换机和路由器;能够基于科学原理和方法研究网络工程领域的复杂工程问题,涉及计算机网络系统设计、开发、部署、运行、维护、安全保障等方面的实验设计、数据分析与解释,并能通过信息综合得到合理有效的结论。
1.2 课程内容
根据教学大纲的要求,本课程的主要内容包括概述、网络设备体系结构、交换机设计与实现、路由协议设计与实现、路由器软件系统等理论。另外,课程会对几种常见的代表性路由协议RIP、OSPF、BGP做基本的讲授,还将路由安全、SDN/NFV等内容作为高级部分进行介绍。
课程总计36学时,理论24学时,实验12学时,具体构成见表1。
1.3 实验内容
本课程由浅入深地设计了3个实验,分别是Packet Tracer组网实验、Quagga以及NetMagic。
1)实验1:Packet Tracer组网。
(1)实验目的与任务:针对理论授课部分的交换机原理、路由原理,在思科的网络模拟器上进行验证。
(2)实验内容:利用Packet Tracer验证VLAN的划分,静态路由协议及动态路由协议中各选择一种进行组网配置,要求提供组网结构图,并记录协议的运行结果。
(3)实验结果及要求:能在Packet Tracer上验证VLAN、静态路由和动态路由的有效性及正确性,记录实验结果,完成实验报告。
表1 路由与交换技术课程教学日历
2)实验2:Quagga。
(1)实验目的与任务:要求学员熟悉Quagga路由软件安装、配置和使用方法,利用Quagga路由软件对路由协议RIP、OSPF、BGP4进行配置,并通过RIP、OSPF、BGP4协议进行组网;通过实验让学员了解并掌握RIP、OSPF、BGP4的工作原理和工作过程。
(2)实验内容:首先要求学员在Linux平台上安装配置Quagga路由软件,然后对Quagga路由软件进行配置,最后通过RIP、OSPF、BGP4协议进行组网实验。
a.使用ip route 命令为所有模拟路由器设置静态路由,使用show ip route命令查看并记录路由状态。
b.使用RIPv2、OSPFv2、BGP4路由协议进行配置并运行上述路由协议,使用对应的查看路由命令查看并记录路由状态。通过配置运行,明白什么是动态路由,知道动态路由的优势是什么。了解3种路由协议的操作与设定,了解其工作模式和计算路由开销的方法,比较它们之间的不同。
(3)实验结果及要求:自主完成实验静态配置部分,所配置的静态路由协议可正常工作,并能记录工作过程;基于动态路由协议进行配置,测试连通情况,并在连通后断开网络查看路由状态,再重新连接网络,查看路由状态,记录每一步路由状态并分析。
3)实验3:NetMagic。
(1)实验目的与任务:让学员掌握NetMagic设备的操作与使用[1],掌握交换机逻辑功能与分组处理流程。主要任务是通过搭建NetMagic实验平台环境实现两台PC的基本交换功能。通过本实验,学员熟悉NetMagic可编程实验平台的使用,通过交换机原型实例理解交换机进行分组交换的原理及其具体实现流程,能够通过代码实现交换功能的基本机制。
(2)实验内容:首先按照实验手册的要求,安装并配置好NetMagic可编程实验平台相关的软硬件环境,然后使用平台提供的示例程序实现NetMagic与外设主机的基本数据IO功能,最后基于示例程序设计实现交换机原型系统,实现自学习二层以太网交换功能。
a.加载环境。烧录NetMagic实验平台的硬件FPGA逻辑,使用fast-0.1.5软件开发环境进行连通性测试,实现平台与外设之间的分组收发功能。
b.功能设计。根据交换功能原理抽象交换逻辑功能,划分分组处理逻辑模块;设计合理的数据结构、存储对象和模块之间的数据接口;为每个逻辑模块画出详细的分组处理流程图,并详细描述不同分支的状态与条件。
c.联调验证。按照交换机制原理和分组处理流程,进行各功能模块的组装、调试;搭建二层交换网络进行数据通路测试验证。
(3)实验结果及要求:加载NetMagic可编程实验平台软硬件环境后,可以实现分组的正常收发功能。学员设计的交换逻辑功能代码能正确运行,源MAC学习可以将MAC地址存储在确定位置,查表可准确得到该地址所在端口号或未命中状态。分组输出能根据不同查表结果进行不同的分发功能。所有功能逻辑正常执行后,两台PC之间能相互ping通,并通过显示函数看到两台交换机进行报文交换的动态过程;拔掉一台主机网线后,可以观测到无法ping通,并在指定时间内从代码打印输出中看到启动表项老化;两台主机网线交换后,从代码输出中能看到原来学习的MAC地址立即更新所在端口号信息。
2 教学模式
课程的教学设计理念主要源自工程教育认证思想,在具体课程实施中主要采用了BOPPPS模型进行教学,见图1。
图1 工程认证的体系框架
根据工程认证的思想,开设本课程的主要目标是落实网络工程专业的指标点,即具备对网络工程领域复杂工程问题开展研究的能力,根据网络核心设备交换机和路由器完成网络基本原理的教学。由于部分教学内容已在前导课程计算机网络中讲授,本课程重点在网络设备的结构、功能、设计上展开。鉴于工程认证要求培养学员解决复杂工程问题的能力,课程设计了一个基于NetMagic的交换功能实现的实验。该实验涉及硬件系统配置、组网、协议分析、编程及测试,3人一组完成实验,同时强化了团队协同沟通能力的培养。
具体教学过程采用BOPPPS模型进行设计。BOPPPS模型的6要素分别为Bridge in、Objective、Pre-test、Participatory Learning、Postest、Summary,中文一般翻译为导入、目标、前测、参与式学习、后测、总结,其中目标和参与式学习两部分最为重要。每次课程,不管是理论还是实验,均按照以上基本要求展开教学活动。目标部分每次课会列举1~2个具体的学习目标,而参与式教学环节的设计,侧重学员进行针对性的分组研讨、实验。在本门课的教学中,理论讲授的实际时间不到总课时数的一半,课后学员需要花较多的时间完成实验及实验报告,3个实验占最后成绩的比例分别为10%、10%及30%,期末考试成绩占最终成绩的50%。
3 NetMagic教学案例
图2 NetMagic平台系统组成
NetMagic可编程网络实验平台包括硬件开发环境与软件开发环境,见图2。硬件开发环境采用5级流水工作模式,主要包括报文解析模块、关键字拼组模块、通用查表模块、动作执行模块和通用输出模块。软件开发环境包括内核开发环境与用户态开发环境。内核开发环境包括虚拟以太网驱动、多核IO转发编程模块、多进程UA编程模块和用户态零中断快速IO编程模块。虚拟以太网驱动使得NetMagic硬件设备端口可完全虚拟成主机逻辑设备,支持标准协议栈和上层标准SOCKET应用。用户态开发环境主要由FAST开发库组成,主要包括支持硬件寄存器读写的libreg库、支持硬件流表规则读写的librule模块、支持多进程UA编程的libua模块、支持OpenFlow原型交换机的libofp应用库,FAST库支持基于libnet和libpcap开发库进行编程。
笔者在FAST架构下开发了一个基于NetMagic的交换实验模块。硬件部分不需要学员修改,但需要安装相应的调试环境;软件层面,将所有功能集中在一个*.c文件中,把6个核心函数删除,留给学员编写。所有功能之间的逻辑见图3。
在图3的基础上,学员将完成函数的编写并进行测试,正确的泛洪功能的实现代码如下:
实验的成绩以现场验收和实验报告为主,现场验收主要考查学员完成实验的正确性和速率,而实验报告主要用于学员的过程性评估。在验收过程中,教师也会对学员进行相应的提问,考察学员的能力。
采用NetMagic进行实验教学的优点有:在可编程的网络设备开放环境下,学员可以通过代码实现网络设备的功能,对于学员深入理解网络功能和原理具有显著的效果;能够与目前的软件定义网络、网络功能虚拟化等网络发展的新趋势结合,使学员在后续本科毕业设计、研究生课程或工作后具备更好的网络设备研发能力;也能为其他后续网络工程相关课程、大学员创新实践、电子信息竞赛、信息安全竞赛等多个创新实践活动提供实验基础。
图3 交换功能的逻辑
4 问题与对策
实验中遇到的问题如下:
1)NetMagic实验分工不够科学。
在8小时的课堂实验时间里,只有一组现场调试成功并通过了现场测试,造成进度滞后的原因是学员对可编程网络设备的软硬件环境不熟悉。由于学员使用的操作系统、虚拟机版本各异,在搭建环境的过程中出现了不少问题。3个人的小组,默认1人进行环境搭建与测试,1人写代码,1人负责实验报告的撰写,而实际完成情况往往是编程能力最好的学员也完成了其他工作,在分工协作上,还需要进行更科学的设置。
2)代码阅读和编写的能力问题。
在Linux环境下用C语言编程,应该是在大学一年级和二年级解决的问题,然而在实际实验过程中,依然有学员存在读写程序能力不够的问题,并在代码写作规范性方面普遍缺乏正规化训练。
3)对网络协议的理解不够深入。
虽然在实验之前学员已经学习了计算机网络等先导课程,但在代码实现层面上,依然存在理论只是理论的问题。比如在泛洪过程中,大部分学员依然把报文发给所有端口,这种在考试时不会犯的错误在实践中还会出现,说明理论教学本身存在明显不足。
根据以上问题,笔者提出如下几条建议。
1)提供更丰富的实验案例。
本次实验,所有学员都完成相同的实验内容,这导致了一些问题,比如后做实验的学员可以咨询先做出来的学员,降低了主动思考并解决问题的难度。更科学合理的做法是提供一组实验,为每个实验设置难度系数,记录学员完成的时间,并互相评分。
2)丰富课前及课后的实验环境。
本实验均在课堂上完成,而实际上更合理的方式是在课堂上交流,实验应该安排在课下,这需要专业实验室及NetMagic团队提供支持。本次课程建立了一个微信交流群,在课下针对实验中遇到的问题提供了一个交流平台,大部分问题可以在线解决。改进的建议是在课前提供实验环境,让学员先通过已有案例熟悉开发环境。实验开始后,提供一个更好的交流平台,让学员根据不同主题主动在专区中提出问题,并提供解决方案,这样可以大幅提高学员完成实验的效率。
3)打通网络工程专业核心课程的实验。
由于NetMagic平台目前仅仅在路由与交换技术课程中使用,受限于课程时间安排,并未充分发挥出其在网络教学系列课程中的作用。因此,可以考虑在计算机网络、网络工程、网络工程课程设计等相关课程中安排相应的实验,必将更好地达到网络工程人才培养的目标。
5 结 语
本次路由与交换技术的教学是可编程网络设备在学校网络工程专业本科专业教学中的首次尝试。这次尝试是成功的,但也暴露出不少问题。考虑到目前工程认证、新工科等高等教育的新要求,必须结合网络工程专业的研究方向开展教学。为了更好地适应网络设备软件定义化、虚拟化、智能化、通用化等发展趋势,必须加强以NetMagic为代表的可编程网络设备的实验教学,通过更高强度、更科学合理的实验环节训练,不断提升学员解决复杂工程问题的能力,为学员毕业后从事网络专业工作的研发能力打下更坚实的基础。
[1]李韬, 孙志刚. 面向下一代互联网实验平台的新型报文处理模型: EasySwitch [J]. 计算机学报, 2011, 34(11): 2187-2196.