网络仿真(一)

news2024/9/23 5:26:55

网络仿真的意义

在网络规划和设计、网络设备研发、网络协议开发中,需要一种手段来反映和预测网络的性能 网络仿真可以提高网络规划设计的可靠性和准确性,明显降低网络投资风险,减少不必要的浪费

Ns-2 is a discrete event simulator

Scheduler

Advance of time depends on the timing of events

Object-oriented simulator

C++ : fast to run, slower to change – protocol implementation

Otcl : slower to run, fast to change – simulation configuration

Components

Ns – simulator itself

Nam – network animator Visualize ns (or other) output

Simulation procedure

Pre-processing

Traffic and topology model

Post-processing Trace analysis, often in awk, perl, or tcl

Platform

Unix (Linux)

Windows (cygwin)

Packages

Tcl/tk

Otcl

tclcl

Ns-2

Nam

Xgraph

C++ compiler

NS2安装

windows:虚拟机 cygwin Liunx 版本2.19或2.31 安装过程 (请百度)

Linux 下NS2使用

“cd 文件夹名” 与 “cd..” 命令进入编写好的tcl脚本所在的文件夹 “ns2 xxx.tcl” 测试:~/ns-allinone-x.x/ns-x.x/ns-tutorial/examples

Tcl与OTcl

Tcl:Tool Command Language,是一种脚本语言

OTcl:Object Tcl,是在Tcl的基础上进行了面向对象的封装 NS中主要使用Tcl/OTcl来模拟环境中网络的环境和参数设置 

Tcl基本语法

Tcl只支持一种数据结构,即字符串

Tcl基本语法

Cmd arg1 arg2

Tcl中对代码进行注释用“#”

 

NS2基本组件

节点(node):网络设备

链路(link):网络物理连接

包(packet):数据包

代理(Agent):创建传输层的端到端连接

调度器( Scheduler):事件调度 

用Tcl/Otcl进行网络仿真

以端到端测量实验为例开始网络仿真

网络中测量端节点的时延、丢包率等参数对于了解网络运行状态、优化网络结构、提高网络服务质量具有十分重要的作用 本项目实验的目的是通过构建网络环境,测量网络中的节点之间时延、丢包率等参数,分析参数与网络流量的变化关系

以端到端测量实验为例开始网络仿真

初始化

创建ns simulator

创建.tr文件(记录仿真结果)

创建.nam文件(记录仿真过程)

设置结束函数

设置仿真中所需的参数

创建仿真拓扑

创建节点

创建并设置链路

设置链路各链路在nam中的排列方式

创建流量

探测流量:向网络中添加的额外流量,通过对这些流量进行统计分析可以获得端到端性能参数,在ns2中可以通过设置CBR、UDP、TCP等形式的流量实现。

背景流量:用于模拟网络中已经存在的流量,可以有TCP、UDP、短时TCP等多种形式。(添加准则:尽量能够反映实际网络中流量的特性)

设置步骤

设置流量的产生、结束

结束仿真

实例说明

 

 

 dest_node_num对应拓扑图的最下面,给每个节点编号

for循环创建节点,然后一条一条创建链路

 队列设置小一点(几十),方便观察丢包

91——131行: 每条链路源点和目的节点的节点编号,放入到两个向量中ls和ld 

设置背景流量,希望和真实流量行为一致 

设置每条udp流的起始和结束时间

在链路的源节点创建一个agent,把agent链接到目的节点。

发送一个随机产生的udp流,发一段时间,挺一段时间,发送和停止的时间各占一半,创建了每条链路上的udp流,每一条链路上都添加了link_udp_num条UDP流 

 

 每一个包是一个CBR流 (修改为源到每个叶节点的所有探测包都在一个CBR流)

对发包过程进行简化,每条CBR流的起始和结束时间 

 

实验目的:

熟悉Tcl/OTcl脚本语言的基本语法,熟悉NS2的基本组件和使用 掌握使用Tcl/OTcl脚本语言实现网络仿真环境,仿真结果分析方法 

实验步骤:

使用NS2构建仿真网络拓扑,给出相应的拓扑结构图,不少于20个节点

利用NS2流量发生器模拟产生流量,使链路平均负载达到需要的比例,给出链路平均负载的计算过程和结果

利用CBR流量发生器在端节点之间发送数据包

通过对NS2仿真结果文件(*.tr文件)的分析,统计CBR流量数据包的传输情况,计算端到端平均排队时延和丢包率

验证链路平均负载对端到端时延和丢包率的影响,给出端到端时延和丢包率随链路平均负载的变化曲线图和结果分析,并对结果进行分析

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1484005.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

若依框架使用mars3d的环境配置,地球构建

因项目需要,原本使用过的cesium依赖,现在想使用火星科技mars3d的一些功能,所以需要引入mars3d依赖,整个过程非常的坎坷,以至于我都不知道到底是哪些部分是标准的。。。先把我认为对的记录一下: 1.vue.conf…

(四)优化函数,学习速率与反向传播算法--九五小庞

多层感知器 梯度下降算法 梯度的输出向量表明了在每个位置损失函数增长最快的方向,可将它视为表示了在函数的每个位置向那个方向移动函数值可以增长。 曲线对应于损失函数。点表示权值的当前值,即现在所在的位置。梯度用箭头表示,表明为了增…

4.Java---方法+重载

方法 方法的调用是需要开辟内存的,方法调用结束内存就被销毁了. 下面将介绍一个经典的错误标准的0分的示意! 我们日常中写交换两个数字的代码的时候都会用如下的方法进行描述: 你是不是觉得自己写的特别对!终于可以独立写一个小小的函数了? 下面运行一下看看结果 哦莫!怎么…

MySQL进阶45讲【28】如何判断一个数据库是不是出问题了?

1 前言 在MySQL进阶45讲【24】MySQL是怎么保证高可用的?和MySQL进阶45讲【26】主库出问题了,从库怎么办?文章中,介绍了主备切换流程。从这两篇文章中可以知道,在一主一备的双M架构里,主备切换只需要把客户…

kettle开发-Day43-加密环境下运行作业

前言: 金三银四,开年第一篇我们来介绍下,怎么在加密情况下运行我们的kettle作业及任务。无疑现在所有企业都认识到加密的重要性,加密后的文件在对外传输的时候不能被访问,访问时出现一堆乱码,同时正常的应用…

nginx笔记整理

目录 一.Nginx基础介绍 二.nginx安装配置 三.Nginx配置文件 3.1nginx主配置文件(/etc/nginx/nginx.conf) 3.2默认的网站配置文件(/etc/nginx/conf.d/default.conf) 四.创建新的虚拟主机 五.Nginx日志 5.1nginx日志格式 5.2查看日志 5.3日志缓存(了解) 5.4日志轮转(/…

Linux内核队列queue.h

文章目录 一、简介二、SLIST单向无尾链表2.1 介绍2.2 操作2.3 例子 三、STAILQ单向有尾链表四、LIST双向无尾链表五、TAILQ双向有尾链表六、CIRCLEQ循环链表七、queue源码参考 一、简介 queue.h是一个非常经典的文件,定义了一系列宏的操作,它定义了一系…

.halo勒索病毒的最新威胁:如何恢复您的数据?

尊敬的读者: 随着科技的发展,网络安全已经成为我们日常生活中不可忽视的重要议题。其中,勒索病毒是当前网络安全威胁中的一大挑战,而“.halo”勒索病毒更是近期备受关注的恶意软件之一。本文将介绍关于“.halo”勒索病毒的背景知…

港交所:3月29日起将货币期货及期权纳入衍生产品假期交易

香港交易及结算所有限公司(香港交易所,HKEX)今日(星期五)宣布,其旗下所有货币期货及期权将于2024年3月29日起纳入衍生产品假期交易的合资格产品名单。 香港交易所集团新兴业务、定息及货币业务主管苏盈盈&a…

svn介绍 4.0

一、svn介绍(版本控制工具) 1、svn的定义: svn是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式个管…

ubuntu个人系统软件安装配置备忘

1. 替换软件源 /etc/apt/source.list 2. 安装必要软件 安装基础软件 sudo apt update sudo apt install -y python3-pip git vim curl wget clang clang-format flameshot docker升级pip3 python3 -m pip install --upgrade pip 安装google浏览器 https://deb.pkgs.org/…

word文档空格不能有下划线【笔记】

word文档空格不能有下划线 2024-3-1 21:20:24 推荐 word下划线打不出来了,是怎么回事? 问题 字后面打不出来下划线 操作 1.点击文件 左上角,点击“文件”。 2.点击选项 鼠标下滑,点击“选项”。 3.点击常规与保存 点击“…

【C语言结构体】用户自定义类型--结构体,结构体传参,位段,联合体和枚举【图文详解】

欢迎来CILMY23的博客喔,本篇为【C语言结构体】用户自定义类型--结构体,结构体传参,位段,联合体和枚举【图文详解】,感谢观看,支持的可以给个一键三连,点赞关注收藏。 前言 上一篇(ht…

AJAX实例

AJAX - Asynchronous JavaScript and XML - 异步的JavaScript与XML,不是一门新技术,只是一个新的术语。(老技术新玩法) - 使用AJAX,网页能够将增量更新呈现在页面上,而不需要刷新整个页面。 - 虽然X代表…

Docker知识点总结二

四、 Docker 架构 Docker使用客户端-服务器(C/S)架构模式,使用远程API来管理和创建Docker容器。 介绍: 1、Docker的客户端client,我们在命令行发送一些信息(命令)给Docker服务端。2、中间这个就是Docker的服务端,在这个服务端里面…

jupyter 用pyecharts进行数据分析

一、jupyter和pyecharts下载和打开 因为我是用的pycharm,所以我直接在pycharm项目终端中下载pip install jupyter,pip install pyecharts 在你下载的项目路径中输入jupyter notebook 之后会进入页面 Jupyter 具体使用参考这个链接:Jupyter Notebook基本…

微信小程序 ---- 慕尚花坊 商品管理

商品管理 01. 配置商品管理分包 思路分析: 随着项目功能的增加,项目体积也随着增大,从而影响小程序的加载速度,影响用户的体验。 因此我们需要将 商品列表 和 商品详情 功能配置成一个分包, 当用户在访问设置页面…

【c语言】基础数据类型

文章目录 1、什么数据类型2、常量3、变量4、整型数据5、浮点型数据6、字符型数据7、字符串数据 1、什么数据类型 ​ 在生活中,裁缝做衣服需要用到不同的化纤、棉花、丝绸等布料,炒不同的菜需要油、盐等不同的配方,而程序员在编写程序时也需要…

我在代码随想录|写代码Day31 | 贪心算法总结篇 | 贪心终结一题

&#x1f525;博客介绍&#xff1a; 27dCnc &#x1f3a5;系列专栏&#xff1a; <<数据结构与算法>> << 算法入门>> << C项目>> &#x1f3a5; 当前专栏: << 算法入门>> 专题 : 数据结构帮助小白快速入门算法 &#x1f4…

对程序、进程、线程、并发、并行、高并发概念的讲解

一、概述 程序、进程、线程、并发、并行和高并发是计算机科学领域中非常重要的概念。 了解进程、线程、并发和并行的概念&#xff0c;可以更好地利用计算机的多核处理器和并行计算能力&#xff0c;提高计算机性能。 了解进程和线程为操作系统中的资源管理提供了基础&#xff…