APP下载

基于NS-3的计算机网络路由转发实验教学方案

2022-04-29胡晋彬何熠王进

计算机应用文摘 2022年20期
关键词:交换机数据包路由

胡晋彬 何熠 王进

关键词:计算机网络;路由转发;NS-3;实验教学

1背景

“计算机网络”作为网络工程、通信工程、计算机科学与技术等计算机专业的核心课程之一,非常注重理论与实践的结合,课程涉及的知识范围较广。因此,需要通过引导学生着手网络实验去更深入的理解计算机网络中各种协议与原理,掌握计算机网络[1-3]的基本概念。

目前,“计算机网络”课程实验主要是在网络设备和网络操作系统上进行。基于网络分布式的特性,实验时需要部署多台计算机和交换设备,因此搭建一定规模的网络环境之后,才可以进行实验。然而,限于经费,许多高校并不具备搭建这种大规模的网络环境的基础,给开展实验的带来了一定的困难。

将NS-3网络仿真模拟器作为基础框架,提供一个具有开放性、可拓展性的轻量级实验平台,可以大大提高教学实验的可操作性。学生可以通过操作NS-3网络仿真模拟器深入理解计算机网络中的路由转发过程,根据六种不同的路由转发模式,分析交换机的数据包转发记录,理解数据包根据统计的不同网络行为特征选择路由转发端口,达到实验设计的目的。

2网络实验教学方案的选择

目前,主流网络仿真模拟软件包括NS-2( networksimulator version 2)和NS-3( network simulator version3)。NS-2是一种面向对象,基于离散事件驱动的网络环境模拟器,由UC Berkeley开发而成。它本身有一个虚拟时钟,所有的仿真都由离散事件驱动,支持各种网络协议的研究、设计和开发。相较于NS-3而言,NS-2虽然可以为学生提供较好的学习和科研实践平台,然而NS-2已有的仿真功能在IP地址支持、路由机制、协议支持等方面都存在不足,难以满足网络实验教学方案的设计与实施。

NS-3作为一种全新的网络模拟器,并不是NS-2的拓展版,它们最明显的区别就是脚本语言的选择,而这也是NS-3的一大优点。NS-2采用C++语言进行功能拓展,再使用Otcl脚本语言配置仿真场景。而在NS-3中,仿真器全都由C++语言编写并开发拓展模板,减轻了学生学习使用NS-3的负担,加强了网络实验的可操作性。

NS-3主要用于模拟计算机网络,它可以在一台计算机上模拟物理世界中的各种类型和规模的网络结构,但没有图形用户界面。利用NS-3进行网络模拟,学生需要经过以下四个基本步骤:(l)安装NS-3软件;(2)编辑源代码;(3)编写模拟脚本;(4)运行模拟脚本。

由此,团队采用NS-3网络仿真模拟器作为实验平台,进行数据包的路由转发实验。

3实验方案

3.1实验目的

团队基于NS-3网络模拟仿真平台,设计了“基于NS-3的数据包路由转发控制”实验。实验目的是帮助学生熟悉NS-3网络模拟仿真平台、理解NS-3网络仿真模拟器的工作流程、掌握网络拓扑的搭建过程、深入理解计算机网络中的路由转发过程、分析交换机数据、理解六种路由转发模式和理解数据包根据统计的不同网络行为特征选择路由转发端口。

3.2实验内容和原理

实验主要内容如下:(1)利用C++脚本语言创建网络拓扑;(2)利用C++脚本语言进行路由配置;(3)选择路由转发模式,设置流量场景,跟踪Leaf交换机上数据包转发记录,验证交换机是否根据所选择的路由转发模式选择端口进行数据包的转发。

六种路由转发模式分别为:(1)五元组哈希选择转发端口(ECMP);(2)随机选择转发端口(RPS);(3)选择最小队列长度的转发端口(Queue);(4)选择路径延时最小的转发端口(RTT);(5)选择ECN标记最少的路径的转发端口(ECN);(6)选择链路利用率最小的路径的转发端口。

实验原理是在NS-3网络仿真模拟器上,通过脚本语言对路由转发模式进行选择,控制交换机对数据包转发的规则和模式。

3.3实验环境

实验环境采用一台Vmware或VirturalBox虚拟机,基于GNU/Linux平台,安装和配置NS-3开发环境,下载NS-3软件包的最新版本。

3.4实验设置

3.4.1创建拓扑

NS-3网络仿真模拟器使用C++脚本完成实验配置,在导入常见的功能和辅助模块后,开始創建网络拓扑。

实验所部署的网络拓扑结构为如今数据中心网络大范围部署的叶,脊(Leaf-Spine)网络拓扑结构,最顶层核心交换机为Spine交换机,而Leaf交换机作为中间接人层,向上连接Spine交换机,向下连接终端服务器。这种叶.脊网络拓扑架构有多种好处,如可以降低网络传输延时、拓展网络带宽、缓解网络流量瓶颈等,解决了在当今数据中心网络中流量急剧增加、规模日益扩大带来的传统网络拓扑无法适应的问题。

本文实验须搭建一个2 Leaf和3 Spine的叶一脊拓扑结构(发送端和接受端之间有3条并行路径)。每个Leaf交换机下都连接4个终端服务器。

实验中设置splne交换机数量为3,leaf交换机数量为2,servers交换机数量为4。网络拓扑NodeContainer类,创建各类结点,脚本如下:

NodeContainer spines;

spines.Create( SPINE_COUNT);

NodeContainer leaves;

leaves.Create( LEAF_COUNT);

NodeContainer servers:

servers. Create(SERVER—COUNT*LEAF—COUNT);

通过创建NodeContainer对象,把各类不同结点分别归类到不同结点容器中,以便后续脚本操作,其中SPINE—COUNT=3,LEAF—COUNT=2,SERVER—COUNT=4。接下来,设置该拓扑的链路带宽和延时等属性,脚本如下:

PointToPointHelper p2p;

uint64_t LINK_CAPACITY;

Time LINK_LATENCY:

通过使用NS-3构建简单的点对点数据链路构建点对点通信模型的PointToPointHelper助手类,设置“DataRate”和“Delay”属性,这里统一设置所有的链路带宽为LINK_CAPACITY= 10Cbps,延时设置为LINK_LATENCY=10US。

3.4.2路由配置

路由配置脚本如下:

Ipv4GlobalRoutingHelper globaIRoutingHelper;

intemet.SetRoutingHelper( globalRoutingHelper);

intemet.lnstall( servers);

intemet.lnstall( spines);

intemet.lnstall( leaves);

Ipv4GlobalRoutingHelper::

PopulateRoutingTables();

通过操作NS-3中网络层全局路由配置助手类globalRoutingHelper,调用函数PopulateRoutingTables(),为每个交换机自动配置路由表。Leaf交换机和对应终端服务器的链路,IP配置情况如图1所示。Leaf交换机和对应Spine交换机的链路,IP配置情况如图2所示。实验所搭建的总体拓扑图如图3所示。

3.5实验主流程

3.5.1ECMP路由转发模式

实验设置路由转发模式为根据五元组哈希选择转发端口(默认的ECMP),通过检测Leaf0交换机上的数据包转发过程,验证实验的正确性。

流量场景设置为:模拟开始时,同时从server

0、server 1和server 2发一条大小为100KB的流往server 4,(数据包大小默认为1500B)检测交换机上所记录的数据包转发记录如图4所示。

通过检测leaf 0交换机上数据包转发情况,发现三条流分别平均从端口5、端口6和端口7转发出去。路由转发结果正确,结果符合预期,验证了ECMP路由转发模式基于流转发的特性。

3.5.2随机包散射RPS路由转发模式

实验设置路由转发模式为随机选择转发端口(随机包散射RPS),通过检测交换机上数据包的转发过程,验证实验的正确性。

流量设置为:模拟开始时,从server l在发一条大小为1000KB的流往server 5,检测交换机Leaf 0上所记录的数据包转发记录如图5所示。

通过检测leaf 0交换机上的数据包转发情况,发现从端口5、端口6和端口7转发的数据包数量大小基本一致,路由转发结果正确,结果符合预期,验证了随机包散射RPS的路由转发模式的实验。

3.5.3选择最小队列长度的转发端口

实验设置路由转发模式为选择最小队列长度的端口转发,通过检测交换机Leaf0上的数据包转发过程,验证实验的正确性。

流量设置为:模拟开始时,同时发送三条流,第一条流从server 0发往server 5,第二条流从server 1发往server 6,第三条流从server 2发往server 7,流大小都为100KB。检测发流之后的某一时间点的Leaf 0交换机各端口的缓存队列长度,以及Leaf 0交换机在这一时刻对数据包的路由转发选择,如图6所示。

比如,跟踪time= 0.08157s时,Leaf 0交换机上各队列长度(出端口队列):端口5队列长度为11,端口6队列长度为8,端口7队列长度为12。而此时数据包选择端口6进行转发,路由转发结果正确,结果符合预期。

3.5.4选择路径延时(RTT)最小的转发端口

实验设置路由转发模式为选择路径延时(RTT)[4]最小的端口进行数据包转发,通过检测交换机Leaf 0上的数据包转发过程,验证实验的正确性。

首先,将leaf 0交换机上连接port 5的整条链路的时延属性更改为10Us,连接port6的整条链路的时延属性更改为15Us,连接port5的整条链路的时延属性更改为20Vs,使三条链路造成时延差,以便观察交换机对数据包的处理情况。流设置为10kb,并从server 0发往server 4。开始模拟实验后,观测leaf 0交换机上的数据包转发行为,如图7所示。

最后,通过检测leaf 0交换机上数据包转发情况,发现大部分数据包都发往时延设置较小的对应端口port 5,验证了交换机根据最小的往返时延RTT端口作为最佳发送端口进行发送的特性,路由转发结果正确,结果符合预期。

3.5.5选择ECN标记最少的路径的转发端口

实验设置路由转发模式为选择ECN[5]标记最少的端口进行数据包转发,在有拥塞的情况下,通过检测交换机Leaf 0上各端口的ECN标记情况,即交换机Leaf 0的当前数据包转发行为,来验证实验的正确性。

流量设置为:模拟开始时,同时发送四条大小为IOOKB的流,分别从server 0发往server 4,server l发往server 5.server 2发往server 6.server 3发往server7。开始模拟实验,观测leaf 0交换机数据包转发行为,如图8所示。

通过检测leaf0交换机上数据包转发情况,当前时刻数据包根据各端口的ECN标记数量,选择了ECN标记最小的port 7端口进行路由转发,路由转发结果正确,结果符合预期。

3.5.6选择链路利用率最小的路径的转发端口

实验设置路由转发模式为选择选择链路利用率最小的路径的端口进行数据包转发,结合交换机Leaf 0的当前数据包转发行为,验证实验。

流量设置为:模拟开始时,同时发送四条大小都为100KB的流,分别为从server 0发往server 4,server1发往server 5.server 2发往server 6.server 3发往server 7。开始模拟实验后,观测leaf0交换机上的数据包转发行为,如图9所示。

通过检测leaf 0交换機上数据包转发情况,当前时刻数据包根据各端口的链路利用率,选择了ECN标记最小的port 6端口进行路由转发,路由转发结果正确,结果符合预期。

4结束语

在基于NS-3的数据包路由转发实验中,学生使用C++脚本语言在NS-3网络仿真模拟平台创建拓扑和路由配置,了解了NS-3的使用:通过六种基于不同端口选择条件的路由实验,深入理解了计算机网络中路由转发过程,夯实了网络基础:通过观测交换机的路由转发过程,深入理解了数据包根据统计的不同网络行为特征选择路由转发端口。

通过实验教学,学生在知识掌握和应用能力方面都获得了较大的提升。同时可以看出,基于NS-3的数据包路由转发实验教学方案具有简单、易操作、灵活等特性,可以快速搭建需要的实验环境,帮助学生进行自主学习和拓展研发。

猜你喜欢

交换机数据包路由
SmartSniff
修复损坏的交换机NOS
探究路由与环路的问题
使用链路聚合进行交换机互联
PoE交换机雷击浪涌防护设计
PRIME和G3-PLC路由机制对比
罗克韦尔自动化交换机Allen-Bradley ArmorStratix 5700
WSN中基于等高度路由的源位置隐私保护
eNSP在路由交换课程教学改革中的应用
视觉注意的数据包优先级排序策略研究