网络仿真3-NS2协议修改和移植

Ns2实现原理

 OTcl与C++关联

执行路径:Tcl->Otcl->C++
返回路径:C++->Otcl->Tcl

NS2协议修改和移植

NS2中的各种网络协议在底层通过C++实现,在网络仿真过程中最终通过调用底层C++代码实现网络行为、算法、功能等各种仿真
NS2协议修改:通过NS2中已有协议的修改,完成网络研究中通过对现有协议或算法改进效果的测试和验证
NS2协议移植:将新开发的网络协议移植到NS2中,以便能够对协议性能进行测试和比较
两个实验:
实验二:网络拥塞避免仿真实验
实验三:洪泛无线路由协议移植实验

实验二:网络拥塞避免仿真实验

网络拥塞形成的原因
存储容量的限制:端口转发数据的速率低于数据包到达速率,造成存储空间被占满的情形,后到达的数据包将被丢弃
带宽容量的限制:低速链路难以应对高速数据流的输入
处理器性能的限制:工作效率不能满足高速链路的需求
其它原因:网络规划不合理、路由协议不完善、网络链路性能不稳定等
拥塞的表现形式(对源端):
丢包->重传->…->更大的拥塞->…->网络崩溃

拥塞检测( TCP中的假设):
        丢包由拥塞引起
        接收端向源端发送ACK
                1到2个重复ACK:可能由报文乱序引起
                3个或更多重复ACK :报文被丢弃
拥塞避免:
        队列管理:在一定程度上缓解拥塞(降低丢包率)
                Droptail、RED等
        拥塞窗口:慢启动、加法增大、乘法减小

丢包的假设

在TCP协议中,丢包通常被视为网络拥塞的迹象。TCP使用一系列的机制来检测并响应网络拥塞:

  • 接收端向源端发送ACK(确认):ACK是接收端告诉发送端已成功接收数据包的方式。
  • 1到2个重复ACK:当发送端收到一个或两个重复的ACK时,这可能表明数据包是乱序到达而不是被丢弃。在这种情况下,TCP可能会稍作等待,以允许乱序的数据包被正确排序。
  • 3个或更多重复ACK:当发送端收到三个或更多重复的ACK时,这被解释为一个数据包已经被网络中的某处丢弃。TCP使用这个信号作为网络拥塞的明确指示,并触发快速重传机制,同时进入拥塞控制模式。

拥塞避免策略

为了应对和避免网络拥塞,TCP实施了几种机制:

  • 队列管理:网络设备使用队列管理算法来处理传入的数据包,以减少拥塞和丢包。例如:

    • Droptail:一种简单的队列管理策略,当队列满时简单地丢弃新到达的数据包。这种策略容易导致全局同步和队列振荡。
    • RED(Random Early Detection):一种主动队列管理算法,通过在队列达到饱和前就开始丢弃数据包来避免拥塞,丢包概率与队列长度成正比,以平滑流量并避免队列过长。
  • 拥塞窗口调整:TCP通过调整拥塞窗口大小来控制发送端的数据流量,主要通过以下几种方式:

    • 慢启动:连接开始时,拥塞窗口从一个较小的值开始,每收到一个ACK就将窗口大小加倍,快速增加网络中的数据量,直到达到阈值。
    • 加法增大(AIMD):在慢启动阈值之后,拥塞窗口以线性方式增加,每个RTT(往返时间)增加一个MSS(最大段大小),使得窗口增长更为谨慎。
    • 乘法减小(MD):当检测到丢包事件(如收到三个重复ACK)时,将拥塞窗口大小减半,以减少网络中的数据流量,避免进一步拥塞。

这些机制共同作用,使TCP能够适应网络状况的变化,优化数据传输效率,同时减少数据丢失和延迟的可能性。通过这样的策略,TCP确保了网络资源的合理利用和公平分享,同时避免了网络的过度拥塞

NS2中的Droptail队列管理:
\ns-allinone-2.29\ns-2.29\queue\drop-tail.cc

RED(Random Early Detection)

for more details, please access
http://www.icir.org/floyd/papers/red/red.html
C:\cygwin\home\admin\ns-allinone-2.29\ns-2.29\queue\red.cc

Pa是随队列长度增加而增大的函数,设置的方式可以有很多种,右图为其中的一种

实验目的: 

1. 了解NS2的架构和基本组件的结构
2. 在NS2已有算法的基础上,掌握通过修改NS2底层文件更改这些算法的方法,从而达到仿真自己设计算法的目的

实验步骤:


1. 基于实验一仿真环境,使用drop-tail丢包模式,分析节点队列长度对端到端时延、丢包率的影响
2. 学习随机早期检测(RED)拥塞避免方法的原理
3. 用C++实现简单的RED算法,要求算法中涉及的参数可在Tcl/OTcl脚本中设定,给出RED算法的实现步骤和代码
4. 将实现的RED算法添加到drop-tail文件中,在相同长度队列的条件下,比较添加RED算法前后端到端时延、丢包率的情况,给出添加RED算法前后端到端时延和丢包率的对比图
5. 仿真分析RED算法中不同参数设定对端到端时延、丢包率的影响

修改drop-tail.h:
定义参数:

修改drop-tail.h:
绑定参数

设置新定义的参数值
在\ns-allinone-2.29\ns-2.29\tcl\lib\ns-default.tcl中添加参数默认值

或在脚本中直接定义,语法和默认配置相同

修改drop-tail.cc:
修改函数体:

保存修改和的文件
重新编译make(ns2.29目录下)
修改Tcl脚本进行测试 

实验结果要求:


仿真脚本代码
修改后的文件(.cc and .h)
实验报告
        按照格式完成
        实验步骤详细描述实验过程,RED实现步骤和代码描述
        实验结果及分析
                drop-tail丢包模式下,队列长度对丢包率的影响
                相同队列长度下,比较drop-tail和RED对端到端时延、丢包率的影响,分析结果
                调整RED参数,观测对端到端时延、丢包率的影响,分析结果
实验总结及感想:实验总结,对本实验的感想、建议等

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

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

相关文章

牛客NC403 编辑距离为一【中等 模拟法 Java,Go,PHP】

题目 题目链接: https://www.nowcoder.com/practice/0b4b22ae020247ba8ac086674f1bd2bc 思路 注意:必须要新增一个,或者删除一个,或者替换一个,所以不能相等1.如果s和t相等,返回false,如果s和t长度差大于1…

AOP+MySQL实现一个简历的日志收集工具

一、自定义日志注解 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/*** Description 日志监控自定义注解*/ Target({ElementType.METHOD, ElementTyp…

【数据库系统】SQL和T-SQL

第四章 SQL 基本内容 系统结构、DDL、DML、视图、数据控制、嵌入式SQL SQL介绍 特点 一体化;面向集合操作;非过程化语言;可以单独写,也可以作为嵌入式语言(JDBC) 体系结构 数据库存储结构 逻辑存储结构 面…

AES对称和RSA非对称加密登录接口参数

使用RSA非对称加密AES对称加密 加密类型: RSA:是一种非对称加密算法。它使用一对密钥(公钥和私钥),其中公钥可以公开给任何人,用于加密数据;而私钥需要保密,用于解密数据。AES&#…

小程序 转发 功能

mina/pages/food/info.wxml <import src"../../wxParse/wxParse.wxml" /> <view class"container"> <!--商品轮播图--> <view class"swiper-container"><swiper class"swiper_box" autoplay"{{autop…

在vscode中使用git-新手向

Git 应该是必学的版本同步工具&#xff0c;是代码管理的好帮手。 可是对新手来说上手还是有一丢丢门槛&#xff0c;结合 vscode 同步非常方便。 可实现可视化代码变化&#xff0c;提醒自己记录版本修改内容。非常好用。 在 VSCode 中将项目上传至 GitHub 私有仓库基本步骤 确保…

基于ssm电子竞技管理平台的设计与实现论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本电子竞技管理平台就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息…

2024上半年软考报名时间及费用汇总!最新!

2024上半年软考考试时间为5月25-28日&#xff0c;2024年上半年软考全国报名平台入口3月18日开通&#xff0c;由此可知各地报名时间将会从3月份陆续开始。各地报名时间不同&#xff0c;且部分地区报名持续时间很短&#xff0c;请大家尽早报名&#xff0c;以免错过。 2024上半年…

java:基于BeanDeserializer实现自定义的Java bean 解析器

JsonDeserializer 关于jackson实现自定义的对象解析器&#xff0c;最常用的方式就是继承顶级抽象类(com.fasterxml.jackson.databind.JsonDeserializer) 来实现,比如下面的代码实现 // 自定义的JavaBean class Person {private String name;private int age;// 标准的getter和…

Prometheus(四):VMware Vsphere监控及数据展示

目录 1 vmware exporter安装配置1.1 vmware exporter介绍1.2 安装 - 使用kubernetes部署1、下载2、修改配置文件3、执行安装4、查看 1.3 安装-使用docker的方式1.4 Prometheus配置1.5 Grafana配置&#xff08;模板页面还需要修改&#xff09; 总结 1 vmware exporter安装配置 …

基于docker commit和Dockerfile为镜像添加ssh服务

系统管理员可以通过SSH服务来远程登录管理服务器 本文介绍基于docker commit和Dockerfile为镜像添加ssh服务 docker commit 该命令支持用户对容器自定义 1.获取镜像ubuntu&#xff1a;18.04&#xff0c;并创建一个容器 [rootnode2 db]docker pull ubuntu:18.04 [rootnode2 …

cloudflare 应用例子几则

Cloudflare&#xff08;以下简称 CF&#xff09; 堪称互联网活菩萨&#xff0c;造就一大批高质量的互联网基础技术服务&#xff0c;更难得的是&#xff0c;几乎所有的服务都有对应的免费的套餐&#xff0c;而且出手大方&#xff0c;基本上有足够的容量或请求次数。 CDN CF 最…

MySQL的基本操作

目录 引言 一、SQL语句简介 &#xff08;一&#xff09;SQL通用语法 &#xff08;二&#xff09;SQL分类 &#xff08;三&#xff09;数据类型 1.数值类型 2.字符串类型 3.日期/时间类型 4.修饰符 二、登录mysql服务 三、SQL语句操作 &#xff08;一&#xff09;DD…

深度学习500问——Chapter04:经典网络解读(1)

文章目录 4.1 LeNet-5 4.1.1 模型介绍 4.1.2 模型结构 4.1.3 模型特性 4.2 AlexNet 4.2.1 模型介绍 4.2.2 模型结构 4.2.3 模型特性 4.3 ZFNet 4.3.1 模型介绍 4.3.2 模型结构 4.3.3 模型特性 4.4 Network in Network 4.4.1 模型介绍 4.4.2 模型结构 4.4.3 模型特性 4.1 LeNet-…

java面试:常见的限流算法有哪些

1 什么是限流算法 限流算法是一种用于限制流量请求的频率或速率的算法&#xff0c;其目的是在高并发或大流量请求的情况下&#xff0c;保护系统服务的安全性和可用性。限流算法可以应对热点业务带来的突发请求、调用方bug导致的突发请求以及恶意攻击请求等情况。是一种系统保护…

金融知识分享系列之:出场信号RSI指标

金融知识分享系列之&#xff1a;出场信号RSI指标 一、出场信号RSI指标二、RSI指标原理三、 指标用法四、RSI指标总结 一、出场信号RSI指标 名称&#xff1a;相对强弱指标参数&#xff1a;(默认14)组成&#xff1a;RSI线以及30轴、50轴、70轴构成 0-30是极弱&#xff1a;0-30的…

jmeter接口自动化测试框架

接口测试可以分为两部分&#xff1a; 一是线上接口&#xff08;生产环境&#xff09;自动化测试&#xff0c;需要自动定时执行&#xff0c;每5分钟自动执行一次&#xff0c;相当于每5分钟就检查一遍线上的接口是否正常&#xff0c;有异常能够及时发现&#xff0c;不至于影响用…

服务器病毒木马通用排查处理应急响应流程

目录 一、勒索病毒发作的特征 二、勒索病毒的应急响应 三、勒索病毒预防与事后加固 一、勒索病毒发作的特征 如果发现大量统一后缀的文件&#xff1b;发现勒索信在Linux/home、/usr等目录&#xff0c;在Windows 桌面或者是被加密文件的文件夹下。如果存在以上特…

四十八岁男子心慌心悸,失眠,喉咙有异物,刘家峰告诉你怎么办!

植物神经功能紊乱&#xff0c;通常简称为植物神经紊乱&#xff0c;是一种涉及自主神经系统的失调疾病。自主神经系统负责控制人体内许多自动功能&#xff0c;如心率、血压、消化和体温调节。植物神经功能紊乱是指由于自主神经系统失衡导致的一系列症状和体征的综合症。 植物神经…

windows DCMTK编译使用(qt) 医学图像

由于项目需要生成DICOM格式的图片&#xff0c;需要使用到第三方开源库DCMTK&#xff0c;于是研究了一番&#xff0c;该库是C编写的&#xff0c;DICOM主要用于医疗体系中&#xff0c;除了可以保存图片信息外&#xff0c;还可以储存患者信息&#xff0c;病例信息&#xff0c;医疗…