问题标签 [ns2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1272 浏览

ns2 - 使用 ns-2 模拟实时网络

我是 NS2(甚至是 Linux)的完全初学者。我的任务是演示一个非常基本的仿真示例,以表明可以使用 ns2 进行仿真。在过去的几周里,我一直试图让任何简单的仿真脚本都能正常工作,但都失败了。我敢肯定,专家只需几分钟就可以编写几行代码来执行此操作。我读过的对类似问题的大多数解释对于我对 NS2 或 Linux 的理解来说都太高级了。如果有人可以在学生水平上帮助我,将
不胜感激。

我使用的是 Linux 机器,到目前为止我已经下载并安装了 allinone ns-2.34。我还搜索了一些简单的示例仿真脚本。

例如,我发现了这个:

# Create simulator set ns [new Simulator] $ns use-scheduler RealTime

# Emulator address set me [exec hostname]

# Packet input set bpf0 [new Network/Pcap/Live] $bpf0 set promisc_ true set nd0 [$bpf0 open readonly fxp0] set filt "(not ip host $me)" $bpf0 filter $filt

# Packet output set ipnet [new Network/IP] $ipnet open writeonly

# Input agent set pfa [new Agent/Tap] $pfa network $bpf0

# Output agent set ipa [new Agent/Tap] $ipa network $ipnet

# ICMP ECHO agent set echoagent [new Agent/PingResponder]

set n0 [$ns node] set n1 [$ns node] set n2 [$ns node] $ns simplex-link $n0 $n2 100Mb 1000ms DropTail $ns simplex-link $n2 $n1 100Mb 1000ms DropTail $ns attach-agent $n0 $pfa $ns attach-agent $n1 $ipa $ns attach-agent $n2 $echoagent $ns simplex-connect $pfa $echoagent $ns simplex-connect $ipa $echoagent

# Wait for ping to come in... $ns run

当我尝试运行此脚本时,我收到一条消息:

执行“Network/Pcap/Live create o_11”时从“catch”$className create $o $args“msg”中调用的无效命令名称“Network/Pcap/Live”(过程“new”第3行)在“new Network”中调用/Pcap/Live”从“set bpf0 [new Network/Pcap/Live]”中调用(文件“./vince/emu1.tcl”第 12 行)

谁能帮我解决这个问题?由于我还不是 ns2 专家,所以我不太清楚该代码是如何工作的。我相信这是一个ping响应者。我只需要一个非常简单的仿真示例来证明它可以工作,因此任何其他建议或示例脚本都会很棒!

谢谢

0 投票
1 回答
1291 浏览

networking - NS2 内置的路由算法有哪些?

作为作业的一部分,我正在 NS2 中进行一些小型模拟。我自己选择了模拟器,唯一真正的要求是比较两种路由算法。

所以我按照 Marc Greis 提供的教程在这里

因此,我习惯$ns rtproto DV将路由算法设置为“动态路由”。

其他算法是什么?如果我不使用上面的命令,是否有默认值?有什么地方可以让我了解它们的工作原理吗?

谢谢!

0 投票
1 回答
3386 浏览

regex - 解析 ns2 跟踪文件

我正在使用 NS 2.35 并试图确定我的路由算法的端到端延迟。

我认为任何具有良好脚本编写经验的人都应该能够回答这个问题,可惜那个人不是我。

我有一个跟踪文件,看起来像这样:

但这是我需要做的。

开头的一行+是新数据包添加到网络时。以 开头的行r是目标已收到数据包的时间。-t 之后的双打数字是该事件发生的时间。最后,在 -i 之后是数据包的标识。

为了计算平均端到端延迟,我需要在 -i 之后找到具有特定 id 的每一行。从那里我需要计算r减去时间戳的时间戳+

所以我认为可能有一个用空格分隔的正则表达式。我可以将每个段放入它们自己的变量中。然后我会检查第 15 个(数据包 ID)。

但我不知道从那里去哪里,或者如何把它们放在一起。

我知道网络上有一些用于执行此操作的 AWK 脚本,但它们都已过时且不适合当前格式(而且我不确定如何更改它们)。

任何帮助将不胜感激。

编辑:

这是我正在寻找的完整数据包路由的示例。我在这些之间删除了很多行,以便您可以看到单个数据包事件。

脚本的理想输出将识别 2.134 作为开始时间,将 2.28 作为结束时间,然后给我 0.146 秒的延迟。它将对所有数据包 ID 执行此操作,并且只报告平均值。

有人要求我对文件的工作方式和我的期望进行一些扩展。

该文件列出了大约 10,000 个数据包的描述。每个数据包可以处于不同的状态。重要的状态是+这意味着数据包已在路由器排队,r这意味着数据包已被其目的地接收。

排队的数据包(因此是+条目)可能未被实际接收,而是被丢弃。这意味着我们不能假设每个+条目都会有一个r条目。

我要测量的是平均端到端延迟。这意味着,如果您查看单个数据包,它将有一个入队时间和一个接收时间。我需要进行此计算以找到其端到端延迟。但我还需要对其他 9,999 个数据包进行此操作以获得平均值。

我已经考虑了更多,这通常是我认为算法需要工作的方式。

  • +删除所有不以 a或 an开头的行,r因为它们不重要。
  • 遍历所有数据包 ID(即 -i 之后的数字,例如示例中的 1052),并将它们放入某种组(可能是多个数组)。
  • 每个组现在应该包含有关特定数据包的所有信息。
  • 在组内,检查是否有 +,理想情况下我们想要第一个 +。记录它的时间。
  • 寻找更多的+行。看看他们的时间。日志可能有点混乱。+因此,后面可能有一条线实际上在模拟中更早。
  • 如果这个新+行有一个更早的时间,那么用那个更新时间变量。
  • 假设没有更多+的线,寻找一条r线。
  • 如果没有r线路,则数据包被丢弃,所以不要担心。
  • 对于您找到的每一r行,我们需要做的就是找到具有最新时间戳的行
  • 具有最新时间戳的r行是最终收到数据包的位置。
  • +从时间中减去r时间,这给了我们数据包传输所花费的时间。
  • 将此值添加到数组中,以便稍后对其进行平均。
  • 对每个数据包 ID 组重复此过程,然后最后平均创建的延迟数组。

那是很多打字,但我认为它尽可能清楚地表达我想要的。我希望我是一个正则表达式大师,但我只是没有时间好好学习它来完成它。

感谢您的所有帮助,如果您有任何问题,请告诉我。

0 投票
1 回答
2516 浏览

networking - 如何更改 NS2 模拟中链接的延迟?

我需要运行一个 NS2 模拟,链接的延迟会在运行时发生变化,我在 tcl 脚本中使用以下过程:

更改 $node3 和 $node4 之间链接的延迟。
但它仅在模拟开始之前设置时才有效。
如果我想在某个时间更改延迟,例如

它不起作用。那么如何在运行时更改链接的延迟?

谢谢你的帮助。

0 投票
1 回答
1230 浏览

ns2 - ns2 全局变量

我使用这样的循环创建了变量:

如何通过某些程序调用 n($i) 变量?我称之为

但我得到了错误:

ns: record: bad variable name "n(0)": upvar 在执行时不会创建一个看起来像数组元素的标量变量

0 投票
1 回答
285 浏览

network-programming - 如何评估 tcl 文件的输出?

我被要求使用 NS 对单个 OSPF 区域进行模拟,并根据几个标准评估每个结果:

  1. 控制流量
  2. CPU处理时间
  3. 收敛时间

我已经完成了模拟部分,这里是输出文件之一: http ://www.2shared.com/document/sDcr5Wmo/Single20.html

我不能在这里粘贴它,它很长:S

我的问题是:

如何根据先前的标准评估此输出?例如,在 CPU 处理时间,我试图打开另一个终端窗口并使用

为了在 ns 运行时继续跟踪 CPU 使用率,我不确定这是不是真的:D

希望能在这里找到答案。。

谢谢

0 投票
1 回答
1805 浏览

c++ - 如何将 C++ 变量插入 TCL 脚本程序?

在 NS2 中,有没有办法将 C++ 变量嵌入到 TCL 脚本中?比如在TCL中,这样设置路由协议,set opt(rt) XXX XXX可以是C++程序中定义的变量,比如

0 投票
0 回答
1353 浏览

c++ - NS2-协议修改

我想计算在运行时从 NS2 中的节点发送的数据包数。那是因为我想使用 C++ 对 AODV 协议进行更改。有人可以帮我如何进行吗?

0 投票
1 回答
4217 浏览

c++ - NS2-协议修改 - AODV

我想计算在运行时从 NS2 中的节点发送的数据包数。那是因为我想使用 C++ 对 AODV 协议进行更改。有人可以帮我如何进行吗?

我尝试编辑 recv() 函数来计算正在接收的数据包数量,并在 aodv.cc 中编辑 forward() 函数来计算正在发送的数据包数量。我无法识别数据包来自哪个节点以及数据包被转发到哪个节点。我想知道计算每个节点上的信任值的计数并找到恶意的。你能帮我如何获得和继续。在 AODV 中使用混杂模式怎么样。我对所有这些都很陌生。先感谢您。

0 投票
1 回答
1107 浏览

ubuntu - 在 Ubuntu 11.10 上安装 ns-allinone-2.29.3

我正在尝试在 Ubuntu 11.10 上安装 Network Simulator allinone 包 (ns-allinone-2.29)。我实际上有兴趣使用适用于 ns 的 UCBT 扩展来模拟蓝牙。http://www.cs.uc.edu/~cdmc/ucbt/状态

Plese install ucbt-0.9.9.2.tgz on the top of ns-allinone-2.29.3

我收到以下错误 -

此错误的原因可能是什么?另外,我想知道在网络模拟器上工作的首选操作系统是哪个?