仿真
文章平均质量分 80
Soonyang Zhang
书读半本,浅尝辄止,天资鲁钝,岁月蹉跎,一事无成。
展开
-
udp transparent proxy
测试UDP的透明代理。中间节点向后端中转数据时,保证IP数据包中的四元组信息不变。程序的实现很大参考[1]。测试代码[2],代码文件tp_udp.cc和udp_end.cc在test文件夹下。 在mininet中测试。拓补文件,4h-1s.py#!/usr/bin/pythonfrom mininet.topo import Topofrom mininet.net import Mininetfrom mininet.cli import CLIfrom mininet.link impor原创 2021-07-27 22:46:15 · 656 阅读 · 0 评论 -
implement tcp copa on ns3
Introduction copa [1] is a congestion control algorithm propsed by MIT, targeting for low latency. By reference from mvfst[2], I implements it on ns3 tcp stack. I found the latency factor up add the congestion window has changed from 0.5 to 0.05. Well,原创 2021-06-15 22:32:26 · 504 阅读 · 1 评论 -
implement tcp bbr on ns3 (在ns3上实现TCP BBR)
After several days of work and debug, I implement TCP BBR algorithms on ns3.33. One thing is to get instant rtt instead of smothed rtt. The second one is the way to reset m_priorTime will cause large m_ackElapsed time in the follwing incoming acked pac原创 2021-06-06 11:42:15 · 1488 阅读 · 6 评论 -
How does ns3 solve cross reference issue
First part The use of Ptr object may cause cross reference in ns3. How ns3 destroy the pointer in cross reference situation. Code example, ns3_ptr_ref.cc#include <iostream>#include <string>#include "ns3/core-module.h"#include "ns3/networ原创 2021-05-09 15:50:19 · 146 阅读 · 0 评论 -
tcp transparent proxy (IP_TRANSPARENT)
Introduction tcp透明代理,只是测试demo。 With the support of linux kernal, a proxy on a router can intercept tcp traffic and sends the packet to destination by enble IP_TRANSPARENT. And the addresses is not changed. This demo owns much thanks to go-tproxy[1].#原创 2021-03-21 17:34:09 · 1374 阅读 · 0 评论 -
Run ns3 with multiple processes
采用多进程的模式运行ns3Motivation ns3是个单进程程序。但是,我有一个需求,需要同时运行多个ns3实例。之前我用python脚本,调用subprocess.Popen达到这个目的,例如下面的ns3-pro-mon.py程序。但是有个问题,每次调用waf命令,在启动程序之前,waf需要配置相应的环境变量,这里会耗费一点的时间。比如这里的给出的ns3-process程序,waf的build的时间就需要1 秒,而程序的运行时间只占用200毫秒。在机器学习中的多次训练场景,就需要多次启动ns3程序原创 2021-03-18 22:16:08 · 630 阅读 · 0 评论 -
tpproxy-tcp透明代理
最近有个需求,需要在路由器设备中截获数据包,从而实现中转。为了这个事情,老师顺便给安排了三个小弟,一是给我找点帮手,二是让我带带他们。按照下面的拓补,说明。我们需要在主机h2上截获h1发往h3的TCP协议包。最先实现的版本是基于tun设备,数据包截获之后,采用UDP协议中转,类似openvpn的方式。h1----s1----h2------h3 采用tun的方式,需要配置h1的默认网关。但是我们的需求比较特别,我们对h1是没有修改权限的。之前师弟实现了一个版本,采用tap的方式,将h2-eth0同原创 2021-01-07 21:14:01 · 1934 阅读 · 1 评论 -
在mininet中测试arp欺骗
我本来只用给出测试的拓补,以及仿真中使用的命令,本篇博客就算完事。最近csdn的博客系统,好像不允许发布全是英文内容的博客。所以,我要写点废话,便于在此记录我的所学。 测试使用的拓补,2h1s.py#!/usr/bin/pythonfrom mininet.topo import Topofrom mininet.net import Mininetfrom mininet.cli import CLIfrom mininet.link import TCLinkimport timeim原创 2021-01-06 10:25:02 · 677 阅读 · 0 评论 -
自适应视频流媒体码率算法在mininet中仿真
在我们的优化范围内,理想情况下的用户体验:本地播放最合适码率的视频(在特定的设备上,高码率并不一定能带来很高的体验优化. 自适应网络流的优化方法分为三个大的方向:Client-side,Server-side,Network 自适应视频流的目标The goal of an adaptive video player is to choose the bitrate level for future chunks to deliver the highest possible QoE; e.g.,原创 2021-01-06 09:45:29 · 822 阅读 · 0 评论 -
mininet hosts talk to real internet
The code was created by Glen Gibb. With much thanks to his contribution.nat.py#!/usr/bin/python"""Example to create a Mininet topology and connect it to the internet via NATthrough eth0 on the host.Glen Gibb, February 2011(slight modifications原创 2020-12-25 15:50:42 · 356 阅读 · 0 评论 -
intergrate ns3 with mininet
In my last blog[1], I intend to change link bandwidth dynamically in mininet. Even the mothod works, it still complains some error. So, I want to send the packets in ns3 for further processing, in which the delay and bandwidth of a link is easily manipul原创 2020-07-26 19:02:36 · 1185 阅读 · 3 评论 -
change link bandwidth dynamically in mininet
I want to change the link bandwidth dynamically in mininet. Through google, I find the way to achive such goal in [1]. After works of several hours, I finally get my test running. And through iperf test, the bandidth is changed. But I also encounter a err原创 2020-07-25 21:36:27 · 1162 阅读 · 0 评论 -
Evaluate webrtc GCC congestion control on ns3
GCC拥塞控制算法的仿真分析原创 2020-07-09 22:04:22 · 2592 阅读 · 9 评论 -
一个在ns3平台基于UDP协议实现的拥塞控制仿真框架
本来ns3中实现的TCP协议栈就实现了各种的拥塞控制算法,我自己基于UDP协议也实现了一些拥塞控制算法。为什么这么干,当时觉得基于TCP协议仿真不灵活,比如怎么拿到数据包的单向传输时延,怎么统计丢包率。当时觉的这些都没法做,于是就模仿quic协议自己实现了一个简单的传输协议。最近发现,这些在ns3中的TCP协议栈中都是可以实现的。这样就显得我自己的实现很多此一举。通过抄写别人的代码,编程能力有所提升。 然后就有一些同学,询问我的代码,代码本身是开源的。但是,一般向我问询的人都是很小白的。小白只是刚从官网原创 2020-06-15 14:48:03 · 5087 阅读 · 6 评论 -
Evaluation multipath weswood congestion control on ns3
A coupled form westwood congestion cotrol algorithm is proposed in [1], in order to gain better performance in wirelss network. The rule to adjust congestion window is given in [2] with a clear statement.wr←{wr+θwr,when an ack is rece原创 2021-09-20 10:59:55 · 357 阅读 · 0 评论 -
Evaluate multipath BBR congestion control on ns3
The authors in [1,2] propose a couple BBR congestion control algorithm for multipath transmission. A dumbbell topology is built to evaluate whether the multipath BBR session can behave friendly to single BBR session. You know, one of the goal of multipa原创 2021-11-08 17:13:11 · 850 阅读 · 0 评论 -
Evaluation LEDBAT congestion control on ns3
LEDBAT[1]是Bittorrent客户端上使用的一种拥塞控制机制。大公司在开发基于UDP的网络应用时,应该建立拥塞控制机制。因为网络中的数据流应该遵从以下原则:不给当前的网络制造麻烦;保证数据流的带宽公平性,不恶意竞争带宽。 P2P应用不知道安慰了多少宅男寂寞无聊的夜晚,在互联网中的流量中p2p流量中占有很大的份额。以至于当年有些ISP要封锁P2P应用。当年Bittorrent要使用UDP进行数据传输时,在网络中引起了骚动。鉴于Bittorrent在网络中占用的流量,再加上无任何拥塞控制机制的UD原创 2020-05-27 09:31:43 · 595 阅读 · 0 评论 -
westwood拥塞控制仿真
The performance of westwood is tested on ns3 platform. But the implementation of westwood [2] in ns3 has some bug. The logic to estimate bandwidth for each received ack is not right,since the current...原创 2020-04-06 18:17:20 · 823 阅读 · 0 评论 -
Evaluation copa congestion control on ns3
copa是mit提出的拥塞控制算法[1],在mvfst[2]中实现。mvfst是facebook实现的quic协议。我把mvfst中实现的代码,移植到ns3[4]平台上,评价一下这个算法的性能。 建立一条点到点的链路,链路带宽3Mbps,单向时延100ms,,队列长度300ms。一共测试了三条数据流。收据数据包每次发送时的带宽,以及数据传输到对端时的单向时延。 当网络中三条数据流全是copa...原创 2020-04-03 20:37:58 · 1602 阅读 · 0 评论 -
拥塞控制在mininet中的仿真
查看操作系统中支持的拥塞控制版本cat /proc/sys/net/ipv4/tcp_allowed_congestion_control通过socket配置拥塞控制算法#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#inc...原创 2019-10-23 22:49:57 · 3024 阅读 · 0 评论 -
ns3安装教程-A guide to learn the network discrete event simulator ns3
1 upgrade gcc to gcc6sudo apt-get install software-properties-commonsudo add-apt-repository ppa:ubuntu-toolchain-r/testsudo apt-get updatesudo apt-get install gcc-6 g++-6cd /usr/binsudo rm gcc...原创 2019-03-15 10:57:07 · 1324 阅读 · 0 评论 -
ns3-configure different congestion control algorithms
本篇解决的问题,怎么在ns3的仿真实验中,给不同的socket配置不同的拥塞控制算法。 Someone may want to compare the throughput of different congestion control algorithms in ns3 as what I do with ns2[1]. But the command to configure socket...原创 2019-05-07 19:38:13 · 1071 阅读 · 1 评论 -
test quic bbr on ns3
You can’t have your cake and eat it. The network congestion control mechanism is the most important component in computer network. Ever since the Internet has experienced collapse[1], to work out s...原创 2019-06-03 21:00:12 · 1767 阅读 · 11 评论 -
BBR拥塞控制RTT不公平性测试
之前,我在ns3仿真中验证了RTT的公平性特性[3]。使用的拓补很简单,在一个point2point channel中运行了三个数据流。 BBR的RTT不公平性,最先由论文[1]指出,即在同一个瓶颈链路中,rtt大的BBR流可以获得大部分带宽,rtt小的BBR流获取的带宽较少,甚至被饿死。这个毛病其实是一个很大的问题,这个问题使得rtt较小的数据流通过升级BBR算法,可能并没有达到吞吐量提升的...原创 2019-06-18 11:12:00 · 2776 阅读 · 13 评论 -
Compare packets loss rate of BBR and CUBIC on ns3
In this post, I compare the performance of BBR and Cubic on ns3. And the simulation code is based on quic coebase[1]. A point to point channel is built And the link paremeters (link capacity, one way...原创 2019-07-03 10:52:40 · 603 阅读 · 0 评论 -
tcp throughput trace dataset
关于TCP的实际网络中的吞吐量情况,基本可以说是一无所知的。而关于关于网络研究的论文,则是层出不穷。Nearly all of them are done with some fucking ridiculously assumptions and draw conclusion which only work under such assumptions. 关于dash传输优化的研究已经很多...原创 2019-09-23 11:12:13 · 640 阅读 · 0 评论 -
ns2代码分析(三)-CBR业务的创建与路由的建立
ns2仿真路由表的建立原创 2017-11-23 21:33:59 · 1636 阅读 · 0 评论 -
A multipath udp transmission demo on ns3
The demo has only one single file and tested on ns-3.26.mpudp.cc#include "ns3/simulator.h"#include "ns3/log.h"#include "ns3/core-module.h"#include "ns3/network-module.h"#include "ns3/internet-m...原创 2019-03-02 14:54:24 · 637 阅读 · 0 评论 -
A possion traffic generator for ns3
I write a possion traffic generator on ns3 and the code can be download at (https://github.com/SoonyangZhang/possion-traffic)。The packet send interval between packets in a possion traffic follows ex...原创 2019-02-28 10:01:37 · 450 阅读 · 0 评论 -
ns3 ringtopology
I created a ring topology for multi-interface purpose similar the ns3 example SocketBoundTcpRoutingExample. The topolgy in SocketBoundTcpRoutingExample is the following:/* Test program for multi-...原创 2018-04-18 10:42:51 · 733 阅读 · 2 评论 -
ns3源码阅读(二)net-device和channel
仿真,主要模拟的就是网络实体的处理速率与链路之间的时延。 ns3的网卡处理速率反映在NetDevice这个类中,而链路时延则反映在Channel中。上层的数据包发送速率可能比NetDevice处理速率要快,因此类NetDevice要有一个队列,缓存下来不及发送的数据包。 数据包进入队列处理逻辑boolPointToPointNetDevice::Send ( Ptr<...原创 2018-04-10 21:36:38 · 1119 阅读 · 0 评论 -
ns3源码阅读(一)UdpSocketFactory的创建
本篇主要记录,在阅读源程序的过程中,一个困惑我的地方,什么时候Node通过函数AggregateObject注册了ns3::UdpSocketFactory对象。在代码分析中,只摘取与流程分析相关的代码。 主代码为/ns-allinone-3.28/ns-3.28/examples/udp/udp-echo.cc NodeContainer n; n.Create (4);...原创 2018-04-07 17:32:08 · 1982 阅读 · 0 评论 -
ns2仿真学习(六)-自定义协议
这次,我是仿照ns2中的sctp,实现了一个多宿主的UDP协议,目前还比较简单,只能获取端到端的rtt,能够明显看到数据包的乱序情况。中间遇到遇到一些小波折,记录在此,以备后用。在ns2目录下增加文件夹mpudpns2,放置所有的源文件。调试的log,采用的是[1],放在mpudpns2文件下即可使用。当然这个log程序是C语言的,用在C++的环境中需要在h文件中,增加一个宏定义#原创 2017-11-27 11:46:59 · 1950 阅读 · 0 评论 -
ns仿真学习(五)-Tcl中类的静态变量与成员变量
ns2中的tcl脚本中的类的示例,以及静态成员与类成员的声明与使用原创 2017-11-21 21:44:14 · 576 阅读 · 0 评论 -
ns2代码分析(一)-数据包指针进入队列
我发现一个现象,也就在中国,会有某某代码分析,某某代码走读。国外似乎就没有这种现象。 没有法子,想在ns2上做点自己东西,不添加C++代码估计是办不到的。之前我分析了quic中一个小仿真器的大致原理[1]。switch对象中的队列长度为什么增长?进的数据包多,而发送数据包少。就是交换机对象的发送队列在每次发包的之后会检测,上次发送数据包需要耗费的时间,就是网卡的处理能力(packet_le原创 2017-11-04 16:58:52 · 719 阅读 · 0 评论 -
ns2仿真学习(四)-CoDel的队列管理仿真
ns2仿真,对比路由器队列管理机制,对于采用不同拥塞控制TCP流的竞争能力的影响。原创 2017-11-03 15:56:52 · 1181 阅读 · 7 评论 -
ns2仿真学习(三)-不同tcp拥塞控制的竞争能力
这次实验算是对[1]的复现吧,花了一个上午,[1]将TCP的拥塞控制机制框架引入到了仿真环境。本文主要对比了四种tcp拥塞控制机制,bic(n2-n3),cubic(n4-n5),reno(n6-n7),vegas(n8-n9)。瓶颈链路带宽n0-n1(100Mb)。仿真脚本tcp_congestion_compare.tclset MainBuffer 200set TCP_Variant ...原创 2017-11-03 12:02:25 · 3863 阅读 · 24 评论 -
ns2仿真学习(二)-tcp拥塞窗口的跟踪
ns2仿真,跟踪拥塞窗口的大小原创 2017-11-02 19:18:47 · 1637 阅读 · 7 评论 -
ns3源码阅读(三)Application对象
ns3中可以根据对象中的TypeId进行一个对象的创建。每一个对象的cc文件都有这样一个宏NS_OBJECT_ENSURE_REGISTERED,对对象进行注册。这个宏的内容:#define NS_OBJECT_ENSURE_REGISTERED(type) \ static struct X ## type ## RegistrationClass \ {...原创 2018-04-13 21:05:11 · 1650 阅读 · 0 评论 -
link static library in ns3
How to link static library in ns3? Previously, in order to link static libray in ns3, I built all the ns3 lib as static, and got quite large binary programs. After that, I give up the try to link any...原创 2018-12-15 20:28:50 · 401 阅读 · 0 评论