基于NS-3的计算机网络传输实验教学方案设计
胡晋彬,罗望卿,王 进
(长沙理工大学 计算机与通信工程学院,湖南 长沙 410114)
计算机网络是计算机科学与技术、软件工程和通信工程等专业的基础课程,具有理论内容多、范围广和知识更新速度快的特点。计算机网络教学特别注重理论教学与实践操作教学相结合,通过具体的计算机网络实验帮助学生理解和掌握计算机网络传输机制及其工作原理。然而,现有计算机网络教学方案设计中很少考虑目前工业界的实际网络需求变化,具体教学方案设计未采用工业界实际部署的网络传输协议,使得学生难以真正了解计算机网络技术在实际工业环境应用中的需求变化,以及网络传输协议在实际网络环境中部署的具体问题和所面临的实际挑战。为了改变这种状况,教师应及时了解实际工业生产环境中计算机网络技术的迭代和更新,在计算机网络教学中将网络实验设计与现代工业生产中的网络技术紧密结合,设计与社会发展需求和实际应用相结合的教学方案,提高学生的创新能力和解决实际工程问题的能力,同时提高学生的学习兴趣,促进计算机网络技术教学的发展。
本文以目前工业界在生产数据中心网络中实际部署的网络传输协议[1-3]为例,设计并实现了计算机网络传输控制的实验方案,帮助学生在掌握计算机网络基本概念和传输机制原理的同时,更深刻地理解网络中数据包从发送端经过网络中间设备交换机,再传输到接收端的完整传输过程。具体来说,在NS-3网络仿真系统软件[4]环境下,学生通过C++语言编写程序搭建网络拓扑、输入网络流量、配置路由、部署基于不同拥塞反馈信号的网络传输协议,并测试实时吞吐率和数据流完成时间等网络性能[5],以达到了解网络传输控制的工作流程和深入理解网络传输控制原理的目的。
NS-3是基于事件驱动的仿真软件,具有免费的源代码公共源,可满足学术研究和教学对网络仿真模拟的需求[6]。在NS-3网络仿真环境中,可以采用C++和Python两种编程语言编写程序,其源代码可以应用于Linux、Mac OS、Cygwin和Mingw等不同操作系统。一个完整的NS-3 模型具有应用层、传输层、网络层、链路层和物理层。与NS-2相比,NS-3在各个层面都有了很大改进。NS-2网络仿真系统软件只支持C语言和OTcl Tool语言,其仿真结果演示需要通过网络动画模拟器进行。此外,NS-2的很多模块都采用C语言编写,有些模块采用OTcl脚本语言编写,如果只采用C语言而不用OTcl脚本无法运行仿真实验。然而在NS-3网络仿真系统软件中,所有模拟器均采用C++编写,具有良好的继承性和多态性[6]。学生在NS-3网络仿真系统软件中可采用C++和Python两种编程语言编写程序和模拟脚本,为C++程序生成相应的跟踪文件,还可以灵活地生成跟踪文件以分析仿真模拟过程。该软件还有一些其他特点,例如使用IP地址处理节点端口,更有助于学生理解传输过程[7]。
采用NS-3进行网络仿真实验一般有4个步骤:①确定仿真场景;
②编写网络仿真脚本配置拓扑和应用程序;
③运行模拟实验;
④分析仿真数据。
模拟场景由用户根据所研究的网络场景确定,编写网络仿真程序和脚本可分为6个步骤:①通过仿真场景确定拓扑结构和所需的仿真模块,搭建相应节点;
②通过仿真场景确定网络设备类型,并根据拓扑安装在相应节点上;
③为每个网络设备部署互联网协议栈并分配IP地址;
④通过模拟场景确定流量模式,利用Application的子类生成相应的数据包;
⑤根据需要启动相应的记录和跟踪系统,生成数据供后期分析仿真结果;
⑥Simulator::Run()函数启动仿真程序。
2.1 实验内容
基于NS-3网络仿真系统软件平台构建网络拓扑,编写C++程序测试流完成时间和实时吞吐率,深入理解数据包从发送端通过交换机传输到接收端的传输全过程以及传输过程的拥塞反馈。
2.2 实验过程
2.2.1 拓扑创建
采用数据中心广泛部署的叶—脊(Leaf-Spine)网络拓扑结构[8],其中脊交换机为核心交换机;
叶交换机为网络拓扑结构中的接入层,其承上启下,连接终端服务器与核心交换机。叶—脊网络拓扑结构主要解决传统网络拓扑无法适应数据中心流量急剧增加和数据中心规模日益扩大而带来的数据中心高速互联要求问题。与传统网络架构相比,叶—脊网络拓扑架构可以降低网络传输延时、缓解网络流量瓶颈和扩展网络带宽。
本文实验需搭建一个拥有2 Leaf和2 Spine的叶—脊拓扑结构(发送端和接收端之间有2条并行路径)。如图1所示,拓扑结构由两台Spine交换机S1、S2,两台Leaf交换机L1、L2和4台终端服务器组成。
Fig.1 Leaf-spine topology图1 叶—脊拓扑结构
设置拓扑后,配置主机的IP地址。在算法中,IP地址的分配需要定义Ipv4addressHelper对象地址;
然后通过IP地址调用SetBase进行网关与子网掩码设置;
最后在Assign函数调用IP地址的基础上自10.1.1.1起对网络设备分配地址。Assign函数通过对网络连接关系进行分析得到网络上任意两个节点之间的路径信息,然后将这些数据存储到一个树型结构中,这个树即为网络图。该拓扑上多节点网络设备以这种方式进行地址分配时需要使用Address Assign(devices)进行地址分配,而代码设置的对象接口Ipv4InterfaceContainer用于保存和管理成功分配好的IP地址。具体IP地址分配代码为:
2.2.2 NS-3 C++程序
(1)首先添加相应模块的头文件,具体代码为:
然后定义节点容器nodes,由nodes.get(i)获取第i个节点,节点使用Create()函数创建节点,具体代码为:
最后配置基本参数node节点个数、servers服务器个数、leaf-spine交换机个数、flow数量等,具体代码为:
(2)确定所需网络设备类型,并根据第一步设置好的拓扑结构将其分别安装在相应节点上。编写代码定义点对点链接对象pointToPoint,用于配置网络设备,设置点对点通道的链路速率,设置点对点通道的链路延时。定义好点对点链接对象后需要定义网络设备容器对象设备,用于调用安装节点函数,将对等网络设备与通道安装到该节点,网络设备安装完成后需将其分配到devices。
(3)为每个网络设备安装互联网协议栈并分配IP地址。首先需要安装Internet协议栈,在C++中采用代码InternetstackHelper定义对象堆栈;
然后堆栈调用节点安装函数为nodes中包含的节点安装网络协议栈。实验过程中部署数据中心网络中广泛应用的基于显式拥塞通知(Explicit Congestion Notification,ECN)标记的DCTCP[8-9]传输协议。DCTCP于2010年首次被提出,其是数据中心第一个专用的拥塞控制协议。DCTCP调整机制涉及发送端、交换机和接收端,其利用交换机队列长度信息判断网络拥塞程度,对超过一定队列长度阈值的数据包标记ECN位。当接收端接收到ECN标记的数据包,将相应的确认包标记ECN-echo并发送到发送端,发送端根据ECN标记比例对发送窗口进行调整。
(4)使用Application的子类生成相应数据包。定义监听对象echoServer,代码为UdpEchoServerHelper echoServer()。echoServer使用Install(nodes.Get()))安装echo服务器程序,安装成功后返回的echo服务器程序由serverApps保存。调用ServerApps设置ServerApps中包含应用程序的开始和停止时间,代码为serverApps.Start(Seconds(1.0)),serverApps.Stop(Seconds(10.0))。定义被监控的客户端对象echoClient。获取服务器的IP地址,向服务器端口发送数据,并设置要发送的最大数据包数量、设置发送数据包的时间间隔以及设置发送数据包的大小,代码为echo-Client.SetAttribute("MaxPackets",UintegerValue(1));
echo-Client.SetAttribute("Interval",TimeValue(Seconds(1.0)));
echoClient.SetAttribute("PacketSize",UintegerValue(1024))。调用Install函数在节点上安装客户机应用程序,调用Start函数设置应用程序启动的秒数,调用Stop函数设置应用程序启动的时间,代码为clientApps.Start(Seconds(2.0));
clientApps.Stop(Seconds(10.0))。
(5)根据需要激活相应的记录和跟踪系统,为后续模拟结果分析生成数据,并开始模拟实验。
2.2.3 测试与数据分析
运行以上C++实验程序,深入理解传输协议的工作过程,分析数据包如何在网络中通过交换机从发送端传输到接收端,并给出流完成时间和实时吞吐率的计算方法。
(1)数据包传输过程分析。首先要对是否有数据从发送端发往接收端进行编码判断,如果发包成功,程序需继续判断发包成功目的IP是否在同一网段中。如果发包方目的IP与发包方地址所归属的网段一致,程序就会判断正确,进行编码,将数据包封装成一帧,再通过接入层进入汇聚层中,经过汇聚层中的网络设备将数据包送到目的IP;
如果发包方目的地址与发包方不在一个网段中,那么发包方就会将数据包转送到目的IP,再通过汇聚层将数据包转送到网关中。如果没有收到目的IP,那么该数据包将被丢弃;
若接收到目的IP,则该数据包会继续传送下去,直至所有数据包都收到为止,如此循环重复多次即可实现整个过程。最后将数据包回传至目的IP中,选择转发路径及转发端口,IP包被确认后可转发至下一路由器。IP包在到达路由器时先从IP头读取目的IP地址并查找路由表,IP包按照路由协议算法选择最佳路径转发。
(2)流完成时间和实时吞吐率测试。流完成时间是指从发送第一个数据包至接收最后一个数据包的时间。用户通常想让网页搜索、传输文件、深度学习、数据挖掘等业务在最短时间内完成,因此流完成时间成为衡量传输性能的重要指标[9-11]。从C++程序运行后生成的相应trace文件中获取流号、第一个数据包的发送时间和最后一个数据包的接收时间,然后计算出一条流的完成时间。如果需要计算平均流完成时间则可编写脚本计算所有流的平均时间[12-13]。网络性能的好坏通过实时吞吐率一目了然,统计一段时间内的数据字节数量,然后采用Python脚本计算单位时间内传输的字节数,即实时吞吐率。
虚拟实验教学完全建立在计算机技术和网络通信技术的基础上,学生可以在计算机上完成整个教学过程。通过部署目前工业界实际应用的计算机网络传输协议,学生不仅深入了解了数据包从发送端到接收端的传输全过程,学习了如何测试流完成时间和实时吞吐率等网络性能指标,而且了解了计算机网络传输技术的实际需求和面临挑战,提高了研究能力、创新能力、动手能力和实际应用能力。后续可结合最新计算机网络传输技术,设计更符合社会发展需求的实验教学方案,以进一步提高教师教学水平和学生学习效果。
猜你喜欢网络设备接收端IP地址网络设备的安装与调试课程思政整体设计电脑知识与技术(2022年12期)2022-05-29基于扰动观察法的光通信接收端优化策略汽车实用技术(2022年5期)2022-04-02顶管接收端脱壳及混凝土浇筑关键技术石家庄铁路职业技术学院学报(2021年1期)2021-06-09一种设置在密闭结构中的无线电能传输系统新能源科技(2021年6期)2021-04-02基于多接收线圈的无线电能传输系统优化研究科学技术创新(2021年7期)2021-03-23一种基于C# 的网络设备自动化登录工具的研制科学技术创新(2020年7期)2020-04-27铁路远动系统几种组网方式IP地址的申请和设置铁道通信信号(2020年11期)2020-02-07IP地址切换器(IPCFG)网络安全和信息化(2018年3期)2018-03-03基于SNMP的IP地址管理系统开发与应用黑龙江电力(2017年1期)2017-05-17公安网络中IP地址智能管理的研究与思考科学中国人(2017年14期)2017-01-28热门文章:
- 酒店总经理年度工作总结8篇2024-12-07
- 2023年度大一上学期期末个人总结800字10篇(完整)2024-12-07
- 2023年高三综评期末总结8篇2024-12-07
- 四年级科学的教学总结6篇【精选推荐】2024-12-06
- 期末颁奖总结3篇(范文推荐)2024-12-06
- 医院客服年终个人总结7篇2024-12-06
- 2023年度高校寒假安全教育主题班会总结12篇(2023年)2024-12-06
- 2023年有关学生期末个人总结7篇(范文推荐)2024-12-06
- 2023年度公司业务部年终总结10篇2024-12-06
- 园林绿化有限公司年度工作总结5篇【完整版】2024-12-06
相关文章:
- 公司团建活动方案设计_公司团建活动优秀方案设计【完整版】2022-11-07
- 2022年十一国庆节活动方案设计(7篇)(范文推荐)2022-11-10
- 2022年一月份幼儿园课程方案设计合集【完整版】2022-11-14
- 最新小学活动方案设计7篇(完整文档)2022-11-24
- 2023最新教育主题活动方案设计7篇(全文完整)2022-11-24
- 如何提升小学高段科学实验教学的有效性2023-09-23
- “三新”教育背景下高中化学实验教学思考与实践2023-10-23