![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ns3
文章平均质量分 72
荷西·H
你不知道这份散发臭味的代码经历了多少次需求变更。
展开
-
ns3 Traffic Control Layer解读
reference官网模块设计:traffic-control-layer 流量控制层如何拦截传出和传入数据包的更多详细信息 关于数据包如何遍历网络堆栈的讲解 – tl;dr目前感觉不安装qdisc也会排队,且不会影响正常的运转,那就先不看这些了…但是我发现,默认会有一个rootqdisc, 而且默认的排队长度还是1000p ????…设置成1p之后,丢包就是在TC层丢的了…所以device代码层的地方完全trace不到丢包情况(毕竟enqueue到tc层的rootqdisc的时候已经被dr原创 2022-01-05 11:12:05 · 1423 阅读 · 1 评论 -
ns3 simulator离散模拟机制
reference官网的manualsummary离散实践模拟器实现机制Schedule 和 ScheduleWithContext()Simulator::Schedule (Time const &time, MEM mem_ptr, OBJ obj);Simulator::ScheduleWithContext (uint32_t context, Time const &time, MEM mem_ptr, OBJ obj);context就是表明事件发生原创 2022-01-03 21:28:49 · 2418 阅读 · 0 评论 -
ns3 目录
模块设计、数据结构、回调机制回调和跟踪机制(callback and trace) 以及 Config(Connect和path设置)使用Simulator离散模拟机制Traffic Control Layer解读数据收集 & flow monitor使用数据结构 (packet,tag, header,tailer)一些概念list《ns3实践》应用层网络层传输层ns3gymrl-tcp代码逻辑梳理rltcp代码梳理:sim.ccr原创 2022-01-03 21:09:25 · 596 阅读 · 0 评论 -
ns3 trace文件(tr文件)数据分析
基本概念应用层———消息 (message)传输层———数据段(segment)网络层———分组、数据包(packet)【tcp】、数据报【udp】链路层———帧(frame)物理层———PDU(bit比特)报文头的概念报文是网络中交换和传输的数据单元,也是网络传输的单元。报文包含了将要发送的完整的数据信息,其长短不需一致。报文在传输过程中会不断地封装成分组、包、帧来传输,封装的方式就是添加一些控制信息组成的首部,那就是报文头。【每一层前面的添加的信息都是报文头】头部和尾部 ( h原创 2022-01-03 20:52:18 · 2302 阅读 · 0 评论 -
ns3 数据结构
referpacket官网的modulepacket doxygendesignoverview每个网络数据包包含一个字节缓冲区,一组字节标签,一组数据包标签和元数据。开发人员通常希望将数据存储在实际数据包中找不到的数据包对象中(例如时间戳或流ID)。Packet类通过存储一组标签(Tag类)来满足此要求。这些标签有两类用例,这导致了两种不同类型的标签。所谓的“byte”标签用于标记分组字节缓冲区中字节的子集,而“packet”标签用于标记分组本身。两种标签之间的主要区别是复制,分段和重原创 2020-06-06 15:03:38 · 781 阅读 · 1 评论 -
ns3 日志系统 及 命令行传参
文章目录reference常用define in .cc设置显示等级代码命令行 (recommended)reference基础介绍可以看看这个还有就肯定是tutorial 和 manual 了常用define in .ccNS_LOG_COMPONENT_DEFINE ("DcaTxop");设置显示等级代码void LogComponentEnable (char co...原创 2020-04-08 14:16:05 · 434 阅读 · 3 评论 -
ns3 数据收集 & flow monitor
refhttps://www.nsnam.org/docs/models/html/flow-monitor.htmlns3-tutorial之数据收集与可视化https://www.nsnam.org/tutorials/consortium13/visualization-tutorial.pdfData Structure根据最后一张可以得出,timeForwarded指的是...原创 2019-04-19 18:00:06 · 3767 阅读 · 7 评论 -
ns3学习笔记(5) 网络层
模拟之路 @ 网络层源码 src/internet架构网络层主要是指Ipv4和Ipv6两个协议默认情况下安装了TCP/IP协议栈的节点都是双栈节点Ipv4和Ipv6分别各自有个v4和v6的基类本节主要以Ipv4协议栈为例讲解网络层主要基类 及 扮演角色Ipv4协议的基类 主要定义协议的接口函数主要算法在子类Ipv4L3Protocol中实现一个节点只能有一个...原创 2019-07-08 17:08:27 · 2320 阅读 · 1 评论 -
ns3 拓扑和基本功能构建过程演示
先创建节点NodeContainer nodes ;nodes.create(uint n);或者nodes.add(Node xx / NodeContainer xx);# 还有一些获取其中点的操作 like:NodeContainer.Get(uint n);然后自底向上创建 —— 先建立物理层PointToPointHelper ppp; # 对应的还有CsmaHelper#a 链路设置一些属性ppp.SetDeviceAttribute( string Attr, V.原创 2019-07-09 11:56:53 · 973 阅读 · 4 评论 -
ns3学习笔记(3) 应用层
模拟之路应用层ns3中有两类套接字接口两种分类方式 一种是:(根据目的不同基于POSIX的原语函数 Bind() Listen() Recv() Send() —— 建立连接 、接收和发送分组回调函数 —— 接收来自下层协议的事件通知 ( 如连接成功和发送的分组接收成功的反馈)另一种是:(根据信息交流对象不同传输层 流套接字(stream packet数据报文套接...原创 2019-07-07 11:42:47 · 2405 阅读 · 2 评论 -
ns3 回调和跟踪机制(callback and trace) 以及 Config(Connect和path设置)使用
sourcens3 manual of Callbackstutorial of tracing 能回答包括但不限于如下的几个问题: Trace/Connect & Trace/ConnectWithoutContext 的关系 how to find available traces how to find config path how to find signature of traces (有的在当前类,有的是ns3名字空间的,后者我反正一开始是没找到 how to sol原创 2019-07-07 11:42:17 · 2733 阅读 · 0 评论 -
ns3学习笔记(4) 传输层
模拟之路架构 p115源码位于Src/internetsocket是传输层和应用层的交互接口,也是传输层核心算法的实现主体端点概念和作用 p115存储本地和通信对端的套接字地址由于套接字地址的分类不同,也分为v4和v6两种IpL4Protocol移动光标hl 表示上下 jk表示左右常用命令motion表格指令含义快捷键含义d [delet...原创 2019-07-08 13:28:09 · 1246 阅读 · 0 评论 -
ns3 如何找到某个功能的程序入口演示
当在找application层在哪里bind端口的时候(废话肯定是socket->bind())了啊,但不知道是谁调用了这个bind()的时候(官网只有call graph 并没有caller graph TAT),我们就可以在下层的函数(某个必经的函数)里面设置一个断点,然后在该断点使用where命令查看堆栈,就可以看到谁调用的啦举个例子我在网络层的必经函数ipv4-l3-prot...原创 2020-03-05 22:44:28 · 246 阅读 · 0 评论 -
ns3 Application类及修改(成泊松分布) | BulkerSender OnoffSender Packetsink
ref@https://groups.google.com/forum/#!searchin/ns-3-users/Bulk$20Sender$20and$20Onoff$20sender|sort:date/ns-3-users/dlIqWqPjR4M/CRzGuTSxAQAJBulkerSenderref @ https://www.jianshu.com/p/9ee7e7d33d0...原创 2019-04-19 17:12:16 · 1195 阅读 · 0 评论 -
ns3 添加自定义模块
reference:这个 写得挺明了,但是只写了一个很简单的模块应该做的事这个 很周详,是一个标准的模块开发!这个 作为第二个link的补充和修正,perfect!exapmles 、tests文件下的wscript居然也要修改…(以examples下的文件为例子def build(bld): if not bld.env['ENABLE_EXAMPLES']: return; obj = bld.create_ns3_program('vanet-highw原创 2019-04-18 21:19:19 · 1599 阅读 · 0 评论 -
ns3 概念list
无限wifi模块的STA和AP模式区别AP模式: Access Point,提供无线接入服务,允许其它无线设备接入,提供数据访问,一般的无线路由/网桥工作在该模式下。AP和AP之间允许相互连接Sta模式: Station, 类似于无线终端,sta本身并不接受无线的接入,它可以连接到AP,一般无线网卡即工作在该模式。注释中!<的意思时间单位enum Unit { Y ...原创 2019-07-06 16:13:29 · 165 阅读 · 0 评论 -
在ns-3中添加自己编写的模块
简洁明了,但是模块的例子比较简单导入了一个完整的模块 ,过程详尽完整 https://blog.csdn.net/barcodegun/article/details/6898193在examples、tests、当前模块下都有wscript,结构都不大一样,仔细看!编译的时候–enable-examples --enable-tests很重要,不然都不会编译这些exmple、test...原创 2019-04-02 00:21:04 · 751 阅读 · 0 评论 -
ns3-gym rl-tcp代码逻辑梳理
tcp-rl由于并不知道怎么在understand里面把部分uml折叠起来,所以只能先截成这么小…大了传不上来(最长的那个是TcpSocketBase which其实在这里不是重点…)左边竖着的,中间的蓝色的是TcpRlBase,继承了TcpCongestionOpns,说明这个类是个拥塞控制的类我们来看看下面三个小图TcpRL和TcpRlTimeBased分别是基于事件和基于时间的CC ,在这里,CC实际上就是一个Agent的代表了【但实际上C语言部分Agent的动作还是在tcp-env里面原创 2019-04-16 20:37:40 · 570 阅读 · 0 评论 -
ns3 编译报错
/waf configure中出现protobuf的错误messages.proto: Import "google/protobuf/any.proto" was not found or had errors.解决方案:1. 看看config里面有没有把protoc的路径配置进去如果有的话,继续下一步,否则就配置下路径就好了呀2. 重装protocapt-get remove l...原创 2019-04-10 00:51:13 · 2133 阅读 · 16 评论 -
ns3 ./waf快速上手
项目的大致目录结构$ tree|-- src| `-- wscript`-- wscript主目录下有一个主的wscript脚本,要编译的子目录src目录下也有一个wscript脚本(每个wscript是python脚本)主目录的wscript内容#! /usr/bin/env python# encoding: utf-8 // 这里的注释应该是井号的 // 说明...原创 2019-04-14 01:34:10 · 2348 阅读 · 0 评论 -
ns3 学习资源汇总
看到的觉得写的不错的blog资源合集简书 很多翻译和实战讲解newplan的离线查看帮助文档ns3官方资源除了tutorial这种入门的,还可以看看人家的架构设计,对理解函数的调用关系帮助很大原创 2019-04-17 16:16:23 · 503 阅读 · 0 评论 -
ns3gym rltcp代码梳理(一) sim.cc
sim.cc构建网络拓扑分配ip一定要在构建拓扑之后,不然会报错时间是10s哑铃状拓扑 Dumbbell d.GetLeft() 和 .GetRight() 取哑铃状中间的两个路由器.GetLeft( int i ) 和 .GetRight( int i ) 取哑铃状左右叶子的节点先安装中间的节点,再安装两边的哑铃状IP分配左边的所有叶子节点的地址为10.1...原创 2019-07-06 16:13:55 · 883 阅读 · 0 评论 -
ns3gym rltcp代码梳理(二) tcp-rl-env
tcp-rl-env实际上它就是RL中的环境的定义,只不过ns3-gym中的环境还包括拓扑的搭建(sim.cc)他这个类的作用就辅助python中的代码可以像调用gym环境一样去调用环境的接口(get_action、step之类的)OpenGymEnvtcp-rl-env里面所有类的基类,抽象类,主要是定义了官方要的七个接口,都是纯虚函数,毕竟opengym_interface也等...原创 2019-07-06 16:13:51 · 980 阅读 · 3 评论 -
ns3gym rltcp代码梳理(三) tcp-rl
tcp-rlclass TcpSocketDerived : public TcpSocketBasePtr GetCongestionControlAlgorithm ();返回m_CongestionControlAlgorithm,这是TcpSocketBase里面的属性class TcpRlBase : public TcpCongestionOps有成员变量 P...原创 2019-07-06 16:13:45 · 857 阅读 · 4 评论