在《计算机网络》课程教学中,让学生理解基本理论的重要性以及如何应用到现实中是一项难题。当前有两种方法可以缓解这个问题,并帮助学生更进一步的了解网络概念。一种极端情况即纯硬件方案:给学生提供实际的网络设备(例如,路由器,交换机等)并要求他们在不同的网络布局中运用这些设备做实验。这种情况下,每个学生或每组学生必须有专门的设备,这就需要装载硬件的实验室。虽然这对于学习网络管理课程的学生是一个理想的方案,但它并没有为学生提供所需的更深入的网络概念知识。例如,在实验室中学生可以学习如何在网络中的交换机之间配置生成树协议(STP),或是由硬件厂商接口偏向交换机之间部署STP协议,但他们对STP的操作知识将保持抽象且只在一个算法的水平。
另一种极端情况是纯软件模拟:学生用仿真软件来模拟不同的场景[1-3],不同于基于硬件的方法,它不要求专用的网络设备,并且允许学生在课余时间在他们的个人计算机上通过运行模拟器来做他们的任务。仿真软件能促进对协议的分析,并且它对网络研究者在推进实验之前验证提出的想法的正确性也是很有用的。但是,这种方法不能让学生超越仿真软件预测的场景和功能,限制他们获得从编程到现实世界的设备体验,缺乏一种固有的真实性。
可见,在《计算机网络》课程实践教学中,纯硬件和纯软件方式均有其弊端和优势,本文提供了将虚拟化工具Partov的作为一种新的混合型教育工具的应用在《计算机网络》课程教学中,以改善教学效果。引入Partov后,仿真器连接到物理网络的拓扑结构中,允许学生在一个虚拟节点上设计,实施和执行他们的代码,同时允许该节点在真实的网络拓扑结构中进行交互。例如,学生可以实现一个虚拟节点上的路由器,然后观察他们的路由器是怎样和与它直接指向的互联网+进行交互的。
1 Partov简介
Partov提供了一组仿真模型和建立模拟拓扑的 语 言。Partov系 统 是 由 网 络 仿 真 服 务 器(NSS)和 客 户 端 框 架 (CF)两 个 主 要 部 分 组成[4-7].NSS是Partov系统的中心组成部分,它包含创建虚拟拓扑结构及进行仿真的Partov内核,以及扩展内核功能的插件基础设施。NSS负责通过libpcap[4]与外网进行所有的互动,并与CF合作。NSS依次由三部分组成:模拟服务器,虚拟化引擎以及插件基础设施。这些组件及它们之间的关系如图1所示。模拟服务器组件负责将虚拟化框架连接到由CF所提供的分布式框架。每当CF实例请求与Partov服务器进行连接时,模拟服务器组件将通过用户名/密码进行身份验证,然后列举一个新的拓扑图或找到先前实例拓扑图,并将其分配给CF.CF允许学生在他们的个人计算机上执行程序来连接到Partov中央服务器并参与计划模拟。
CF可以在连接的虚拟节点上发送/接收数据包。每当连接的虚拟节点接收到数据包,它会通过模拟服务器决定该数据包是否要被转发到另一个NSS组件或转发到CF,进而对学生的程序进行检查。例如,学生可以实现网桥,路由器或网络地址转化(NAT)功能。这个逻辑可以检查数据包,并决定是应该忽略他们,还是发送回复或发送另一组所需的数据包到网络。这让学生实现了与真实的网络环境进行交互的算法。Partov拓扑语言 (PTL)是基于XML的语言,它对Partov拓扑结构进行声明。每种拓扑是以“MAP”为后缀定义的单独的文件,由三部分组成,用于定义节点,列表(用于资源分配到节点)和链接。
插件基础设施提供了实现插件的基础设施。每个插件可以使用所有由Partov提供的用于处理数据包的实用程序,并且可进行配置。目前,已有四种插件。模拟节点是一个重要的插件,通过它的数据包被转发到CF(即学生的程序),数据包从CF恢复被重新注入了虚拟环境。IPv4路由器接受静态路由表。它可使拓扑可扩展(通过创建分离的网络的广播域)和可扩展(通过分层的网络拓扑)。因特网网关节点是用于将虚拟映射连接到可以用来无缝集成虚拟映射和互联网的真实网络的专用路由器。通用的传输控制协议(TCP)反向代理服务器通过提供所有的TCP数据包及其响应给/从网络中运行的真实服务器,来模拟虚拟网络中没有服务器时的一种手段。
2 课程任务和所含知识点
《计算机网络》课程的教学内容具有概念繁多、原理复杂、协议与技术交叠的特点。它涉及众多的概念、原理、协议和技术,这些内容以错综复杂的形式交织在一起,既有原理的复杂性,又有技术的时效性。所以,在该课程的教学过程中,学生普遍反映无法深入理解网络的原理与技术,知识点的衔接也无法形成整体。在实验过程中,知识的应用又具有盲目性。现有的课堂教学模式无法很好地实现理论与实践相结合、提升学生网络技术能力的教学目的。
Partov的出现为在《计算机网络》课程教学中开展任务驱动模式教学提供了很好的条件,一方面便于理论和实践相结合,一方面便于实施和考核。在任务设计方面,本文以综合性强,TCP/IP为主线,同时兼顾适用性、紧扣网络技术发展为辅。目前已开展的任务和其覆盖的ISO层次关系如表1所示。《计算机网络》课程中,移动IP是重点教学内容。本文以“基于以太网的移动IP(MIPoE)”课程教学任务进行详细讨论。
移动IP协议的作用是在保留它们的IP地址的同时让节点在不同的网络中移动,并因此与这些地址相连接。学生必须实现节点能从无线接入点(AP)获得一个IP地址,并在加入/离开每个无线领域时告知它们,同时实现节点移动,即无线移动节点在从一个AP区域移动到另一个时可以保持自己的IP地址。
在分配中,每个学生被分给一个由图2所示的三个局域网组成的虚拟拓扑结构。每个拓扑结构包括若干节点及三个无线接入点。每个无线接入点有一个覆盖区域并可以接收其节点发送的数据包。由AP发送的数据包可到达其覆盖区域内的所有节点。不同无线接入点的覆盖区域可重叠。这种重叠区域发送的数据包将被所有相关的AP接收。
使用有限状态机可能改变一个节点的位置(从链路断开它,并将其连接到另一链路)。另一方面,每个AP连接到网关节点,并因此通过第二个网络接口连接到因特网[8].学生被要求使用CF准备两种方案。节点程序应该以从一个无线接入点申请一个IP地址开始。然后节点将会移动到另一个无线接入点,在这一过程中,它可能会从一个AP的覆盖区域进入另一个AP的覆盖区域。它也可以是进入到多个AP之间的重叠区域。节点程序期望与相应地AP程序进行通信来找到其当前位置。
AP程序期望检测节点位置并通过IP隧道将家庭网络的数据包重定向到访问网络。学生们也被要求为在节点程序中收到的IP地址设计它们的协议以及无线接入节点通信的协议,使AP可以在任何时候通过跟踪节点来访问网络。在完成这个任务后,学生会对覆盖及基于IP隧道和移动性IP这样概念的网络协议的设计有一个详细深入的了解。除了任务MIPoE,还有大量其他任务:下面做简要说明。
带宽节流器:这个任务要求要善于洞察第三和第四个网络层,要求学生完成一个工作在第四层的带宽节流器调节TCP和UDP流量。在这个任务中,学生可以学习如何通过检查IP,TCP和UDP的报头来检测不同的TCP/UDP流量,如何确定流量的速率,以及如何限制流量的速率。
通过UDP简化的FTP:在此任务中,学生们被要求使用传输层的UDP协议来完成一个简化的文件传输协议[9].这种任务可以帮助学生了解终端到终端的可靠性,分组的重新排序,分组错误及分组丢失/超时。在这个任务中要避免使 用TFTP,因为TFTP包括的细节和要求与它的关键的网络概念无关。
DHCP和ARP:在这个任务中,学生要同时实现服务器和客户端的动态主机配置协议(DH-CP)[10],及地址解析协议(ARP),主要是在数据链路层,网络层及应用层。这教会学生通过ARP解析地址,通过DHCP获取IP和其他网络的信息(如网关地址),以及更多的网络分层的概念。
简化的STP:在这里,首先要求学生们实现一个学习的桥梁来连接拓扑结构中的节点。然后,要求他们加强自己的学习桥梁来完成STP协议的简化版本。这教导学生了解网络节点是怎样通过本地决策和互动来参与分布式算法的。
网络地址转换:这个任务远远超过了NAT的需求。它要求学生实现一个基于UDP协议的客户端,并从定位服务器查询文件的位置,他们完成这些要求必须是在位于NAT服务器后面的服务器的边缘。根据查询,本地服务器应设置适当的NAT规则,使客户端可以连接到正确的服务器并下载所需的文件。这使学生了解有关公共的和私有的IP地址,UDP和TCP端口,以及在实践中动态NAT和静态NAT的工作机制。
传输控制协议:它是在现今计算机网络中最重要的协议之一,要求学生实现一个最小的TCP并用它从一个插座式的Web服务器下载文件。
通过让学生只实现连接TCP的一侧,并用完整的和标准的实现另一端(即,插座式Web服务器)证明了用实际的TCP堆栈实现兼容性是正确的。
这个任务使学生了解了TCP的内部结构包括TCP窗口管理,流量控制,内码,序列号和确认号,以及TCP标志。
内容分发网络(CDN):CDN[11]是一个可以快速响应大量内容请求的网络。学生被分配了一个由几个在地理上分散的服务器群组成的拓扑,并要求在服务器群上建立一个覆盖网络,根据它们的负载和路径延迟重定向到适当的服务器群,完成这个任务之后,学生应了解了覆盖网络和负载均衡,并有能力为特殊用途设计一个通信协议,如在CDN服务器群之间。
分布式哈希表与和弦协议:分布式哈希表(DHT)允许信息在对等体之间被分发和存储。
在这个任务中,学生的方案将被部署在不同的虚拟节点上。这些节点必须建立一个DHT来存储一些档案托管服务器位置的信息,并回复位置查询。
DHT应该抵制随机节点通过在其他节点上适当地存储信息来离开。并且它应该使用新加入的节点并在它们之间高效地分配信息。通过这个任务,学生会了解分布式协议,分布式哈希表以及和弦协议的有关知识。
Partov系统在2011年秋季开始用于黄冈师范学院《计算机网络》课程教学。任务被设计为加强课堂上所教的ISO的OSI模型各层的概念。
对三届共115名学生就行问卷调查的结果表明:84%的学生认为Partov任务在学习协议和概念方面比在课堂上分发的Socket编程任务更有帮助。82%的学生认为基于Partov任务驱动的学习方法能够有效的激发学习兴趣。93%的学生认为尽管编程作业一般都较为困难而且比用纸笔回答理论问题更耗费时间,但这个任务帮助他们比在课堂上讲授的更深入的理解网络概念。同时,笔者在与完成任务的学生讨论问题时看出这些学生对概念有了更深刻的理解。
联系客服