基础ns3指引

最近需要在一个传统协议上实现一些想法,所以使用了ns3。那么在此进行一些记录

首先,当然是推荐一些书籍和手册,ns3的书籍并不多,这几个都是很有用的。不要急,慢慢来,一次看个100来页。

1.ns-3 tutorial 它记录了ns3中最基本的知识点,比如node,application,net device等

https://www.nsnam.org/docs/tutorial/ns-3-tutorial.pdf

(英文版,头大吧,但是后面会给你提供解决办法滴,放心哥们儿)

2.Ns-3 document 它记录了ns3代码的整体结构,和各个模块所用的函数极其注释

https://www.nsnam.org/docs/release/3.31/doxygen/index.html

(看见这一窝蜂的函数头大吧,还都是英文,雪上加霜吧,放心,这也给你解决)

3.书籍《开源网络模拟器ns3架构》,如题,写了ns3的架构,尤其对追踪网络数据,有了比较详细的描述。(那么这本书怎么找呢,请看我之前的一篇文章“如何提高编程水平”,当然文章最后,我会把提到的资料都打包成百度网盘贴在最后,希望不要被和谐)

4.书籍《ns3网络模拟器基础与应用(马春光等)》,这本书其实就像是对ns-3 tutorial的中文解释,或许你可以考虑先看这本书,再看ns-3 tutorial

5.最后一个,其实我觉得挺有用的,就是google group。但是呢,就是一些特殊原因,我们似乎没法访问,但是,如果可以。你在google group里搜索“ns-3-users”这个讨论组,或许会有更多的解决办法

Ok,先解决一个大问题,就是英文版,怎么解决

那么,你需要有一个叫做Microsoft edge的浏览器

点击扩展-edge外接程序-搜索”划词翻译”-选择图片中第四个获取

再选择扩展,可以看到划词翻译已经在里面了,点击划词翻译的内置PDF阅读器,将英文的pdf拉到里面,即可进行逐段翻译。谷歌翻译和deepl结合使用。

此时,你再去查看英文的网页,用鼠标选中一段落后,也会出现划词翻译的图标,点击即可。

那么如果你使用的是谷歌浏览器,谷歌商店走一波。

对于ns3安装这个问题,也是一个大大问题,当然这也涉及到虚拟机呀,linux的安装呀等等

我使用的虚拟机是 virtualbox

使用的ubuntu版本有16.04,18.04,14.04,都可以成功安装ns3 (为什么要装那么多Ubuntu版本呢,因为在解决ospf问题,是的,ns3没有ospf模块,这个就有的说了,后面会单独进行解释)

安装的ns3版本有ns3.31,ns3.26,ns3.25 (那么你只需要装最新的就可以了,那我为啥要装那么多呢,因为我使用3.31想要查看一个队列管理算法是否起作用,结果发现没有丢包,omyga,他想让我嗝屁吗,那么为啥呢,这是因为ns3.26开始它试图避免数据包因队列已满而被网络设备丢弃。在设备队列满之前,它被停止,数据包在qdisc队列(TC层)中积累,所以你看不到丢包。所以你想验证队列管理算法,哪怕droptail,请使用ns3.25)

当然了,这里多说一嘴,如果你想形式化的演示队列管理算法的效果,是不是想这样,可以显示队列长度,和包的情况。

你说,“哎呀妈呀,小老妹儿,你可太懂我了,就这样,哥,高低给你整瓶五粮液”

可是它是用ns2做的,ns3吧

它只能做这样

那么你需要 1.安装虚拟机virtualbox 2.安装ubuntu 3.更换源或者更改虚拟机-设备-网络-改为NAT 4.安装增强功能 5.设置共享文件夹 6.安装必要的源 7.安装ns3

有几个教程是非常好的,链接如下

最后一个提醒,千万别尝试卸载python3,否则,看见黄河水没,我的泪

那么到现在,你已经安装成功了,GOD JOB!好样的啊,兄弟

你点开了ns3.25的文件夹,看到了这样的一个界面

Bindings这个文件夹,就是一些绑定,不用管他

Doc 夹如其名,包含一些注释,这个其实你可以看看

Examples 是一些例子,就是你以后模拟需要参考的例子,那么你点进去一看,欸又是好多个文件夹,他其实是不同模块的例子的分类。我们点击routing

可以看到有很多个文件,首先我们得把其中要运行的文件拷贝到scratch里(为啥要拷贝呢,因为你总得保留一个干净的例子吧)

之后在ns3.25所在的文件夹中,开一个终端,输入 sudo ./waf –run scratch/dynamic-global-routing

(注意哈,没有.cc)

有的例子,开头提到的书里都有介绍。

那么如果只是想用ns3做模拟,基本上吧,不开发其他东西的情况下,上述已经够用了。

如果想要开发点自己的东西,就需要考虑

src文件夹,那么这个文件夹呢,有很多个模块,不同模块肯定控制不同的东西

那我们看Internet这个模块

Bindings 和doc,examples也不用说了。

Model主要是实现的核心代码,helper则是model代码和examples代码交互的一个桥梁。

那么具体的东西,还是需要你看代码。

那么代码就比较多,比较杂,需要先缕一下,那你就需要使用一下ns3-document,注意切换这个网页的版本,切换到你安装的版本,其实差别都不大

可以看到页面的左侧,有model的一列,然后点进去,可以看到模块的摆列和src差不多,每一个函数都有对应的注释,包括里面参数的含义,可以和src的代码对应来看。

关于ospf这个模块。其实有人开发过,也上传GitHub了,我也已经把他移植到ns3了,但是他的实现很不全。完全是按照ns3的globalrouting算法进行改的

适合的版本为ns3.26,那个地址突然找不到了,一会儿全都在最后的百度网盘的文件夹里,名字叫(ns3-ospf-master),安装新模块的方法,网上有。

那么ns3官方对于ospf的解决办法是,采用dce-quagga,就是把一个开源的软件quagga集成到ns3中,有哪个大佬找到quagga和ns3模块是怎么交互的吗。。俺没找到。除此之外,dce-quagga没有实现给ospf赋cost值的函数,所以得在helper里实现一下

还有一个办法就是直接在ubuntu里安装quagga

这样就可以实现ospf算法了,其实就是将每一个虚拟机变成一个路由器

这个教程是关于如何配置rip和ospf

那么我结合两者配置的

下面是我的步骤

1.先对ens03和ens08的ip设置为Manuel,然后配置它的ip地址

2.ifconfig(root模式)查看配置是否成功

3.sudo zebra -d

4.telnet localhost 2601

5.enable

6.configure terminal

7.interface enp0s3

ip address 10.0.4.4/24(刚给ens03配置的ip地址)

quit

interface enp0s8

ip address 10.0.1.4/24(刚给ens08配置的ip地址)

quit

write

quit

quit

8.sudo cp /usr/local/etc/ospfd.conf.sample /usr/local/etc/ospfd.conf

9.cd /usr/local/lib

sudo cp libospf.* /lib

sudo rm libospf.*

10.sudo ospfd -d -u root -g root

11.telnet localhost 2604

12.enable

13.configure terminal

14.router ospf

network 10.0.4.0/24 /

network 10.0.1.0/24 area 2

hostname routerA_ospf

ospf router-id 192.168.1.100

debug ospf event

log file /var/log/ospfd.log

end

write

quit

15.show ip ospf route

16.sudo tail -f /var/log/ospfd.log

show running-config

记住如果要让他们通信,需要让router运行sudo tail -f /var/log/ospfd.log

否则clientA ping 不通clientB

链接:https://pan.bhttp://aidu.com/s掉/1Tj汉tEIEJbLR字5Nm_jgMPG0EQ

提取码:hvog

(把汉字删掉哈,不然会和谐)

都是一个文件哈,咱多来几手准备,狡兔好几窟

最后一句话:茍富贵,勿相忘!!

发表回复

相关推荐

這涼拌菜比肉還好吃!還低脂低熱量!

之前蘇蘇安利瞭一道減脂的花菜炒飯,大傢的反應是:真是不得不佩服女生的意志力!一年有365天,竟然有360天說要減肥!而且隻...

· 41秒前

舒傲寒 我們結婚

傲寒民謠很窮,一聽就是一個故事最早知道馬頔(di)是在2015年《中國好聲音》,張磊翻唱瞭一首《南山南》唱火瞭馬頔,那時還...

· 4分钟前

獸醫病理學-6-細胞損傷,壞死,凋亡

一、細胞損傷的原因缺氧,物理因素,化學性因素,生物性因素,營養物質缺乏或不平衡,遺傳變異,負荷失調,免疫功能異常。二...

· 5分钟前

北京冷門小眾博物館--藏在胡同裡的博物館

在北京各大知名的博物館,永遠不會缺少人們的光顧。然而,想要安安靜靜沉浸式感受博物館的魅力,那麼,下面這些冷門而又小眾...

· 7分钟前

CodeGen概述

CodeGen概述 CodeGen是在协同开发环境中工作的软件开发人员可以用来生成源代码的工具。该代码可能是Synergy DBL代码,也可能 ...

· 9分钟前