基于 ns—3 构建计算机网络教学仿真平台
计算机网络原理》概念抽象、协议繁琐,传统的理论教学
以板书或者PPT进行理论讲解,枯燥乏味。构建基于新型网络模 拟器 ns-3[1] 构建计算机网络教学仿真平台,能提高计算机网络 的教学质量 [2] 。
ns-3 简介
ns-3 广泛汲取了现有优秀开源网络模拟器如 ns-2, GTNetS, yans 等的成功技术和经验,专门用于教育和研究用途的离散事 件模拟器,基于GNLG PLv2许可,可以免费地获取、使用和修改 [3-4] 。
ns-3 仿真流程
搭建 ns-3 网络仿真场景和搭建实际网络类似 [5-6] ,首先生 成网络节点(Node),然后为节点安装网络设备(NetDevice) 及相应的传输媒体(Channel),接下来安装网络协议,包括应 用层(Application ),传输层,MAd,ns-3提供了多个应用 层和传输层协议,数据包( Packets )通过协议栈( Protocol
stack )向下传递给网络设备(类似于网卡,实现了MACi和物
理层协议),于是如图 1 所示数据包就像在真实网络中一样流动。
ns-3 仿真实例
通过仿真实例展示基于 ns-3 构建的计算机网络教学仿真平
台的优势。仿真场景如图 2所示,网络分成两部分: 基于 CSAM/CD
协议的有线局域网和点到点的通信链路。其中节点 0 是服务器;节点 1 有两块网卡, 一块网卡和局域在一个网段, 另一块网卡和服务器在一个网段,负责局域网和服务器的通信。3.1 仿真脚本F面我给出C++脚本的关键代码(p2p网络的部分,csma网络和其代码类似):// 生成节点:NodeContainer p2pNodes ;p2pNodes.Create
协议的有线局域网和点到点的通信链路。其中节点 0 是服务器;
节点 1 有两块网卡, 一块网卡和局域在一个网段, 另一块网卡和
服务器在一个网段,负责局域网和服务器的通信。
3.1 仿真脚本
F面我给出C++脚本的关键代码(p2p网络的部分,csma网
络和其代码类似):
// 生成节点:
NodeContainer p2pNodes ;
p2pNodes.Create( 2);
// 配置网卡信道参数并安装网络设备:
PointToPointHelper pointToPoint
pointToPoint.SetDeviceAttribute
“DataRate”,
StringValue(“ 5Mbps”));
pointToPoint.SetChannelAttribute
“Delay”,
StringValue(“ 2ms”));
NetDeviceContainer p2pDevices
p2pDevices = pointToPoint.Install
p2pNodes);
// 安装网络协议栈并配置 IP 地址:
InternetStackHelper stack
stack.Install
p2pNodes.Get
Ipv4AddressHelper address
255.255.255.0 ”);address.SetBase (“ 10.1.1.0
255.255.255.0 ”);
Ipv4InterfaceContainer p2pInter faces
p2pDevices );p2pInterfaces =
p2pDevices );
//安装应用程序,NodeO为服务器,Node5为客户机:
UdpEchoServerHelper echoServer( 9)
ApplicationContainer serverApps = echoServer.Install
p2pNodes.Get ( 0));
UdpEchoClientHelper echoClient
p2pInterfaces.GetAddress(O), 9);
// 配置路由
Ipv4GlobalRoutingHelper ::PopulateRoutingTables ();
// 利用追踪系统捕获网络数据包:
“ p2p_csma
“ p2p_csma”);
csma.EnablePcap ( “p2p_csma”, csmaDevices.Get (0),
true );
3.2 网络仿真演示
图 3 是 ns-3 可视化模块 PyViz 在线显示实例仿真场景的拓 扑结构、 网络配置及通信时的画面。 网络选择 NodeO(1O.1.1.1 ) 为服务器端, Node5(10.1.2.5 )为客户端, Node1 包含两个不 同网段 IP 的网络设备, 分别是点到点网络的 10.1.1.2 和局域网 络的 10.1.2.1 ,负责局域