NS2:如何为节点设置队列限制

Posted

技术标签:

【中文标题】NS2:如何为节点设置队列限制【英文标题】:NS2: How to set queue-limit for a node 【发布时间】:2020-10-12 14:50:10 【问题描述】:

我正在尝试使用 NS2 模拟此网络:

我已经建立了这样的网络

#Create six nodes
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
set n4 [$ns node]
set n5 [$ns node]

set recvr_delay1 [new RandomVariable/Uniform];
$recvr_delay1 set min_ 5ms
$recvr_delay1 set max_ 25ms

set recvr_delay2 [new RandomVariable/Uniform];
$recvr_delay2 set min_ 5ms
$recvr_delay2 set max_ 25ms

# TODO: make these delays random
#Create links between the nodes
$ns duplex-link $n0 $n2 100Mb 5ms DropTail
$ns duplex-link $n1 $n2 100Mb $recvr_delay1 DropTail

$ns duplex-link $n2 $n3 100Kb 1ms DropTail

$ns duplex-link $n3 $n4 100Mb 5ms DropTail
$ns duplex-link $n3 $n5 100Mb $recvr_delay2 DropTail

我知道我们可以在 NS2 中为链接设置队列限制:

$ns queue-limit $n0 $n1 10

但问题是我不想为链路设置队列限制,我想为这两个路由器设置队列限制,有没有办法为节点而不是链路设置队列限制?

【问题讨论】:

【参考方案1】:

基于NS Simulator for Beginners book

“在 NS-2 中,节点的输出队列被实现为输入为该节点的每个链接的一部分。链接的定义包括处理该队列溢出的方式。”

希望对你有帮助。

【讨论】:

这个答案是对的,现在的问题是,如果两个路由器之间存在双工链路,我们应该将队列限制设置两次还是一次就足够了?【参考方案2】:

我想在接受的答案中添加一些内容。 您可以使用两个单工链路(与双工链路相同),并且只为其中一个分配队列限制。 例如,假设我们要在节点 R 和节点 B 之间建立双工链路:

set R [$ns node]
set B [$ns node]

$ns simplex-link $R $B 1Mb 100ms DropTail
$ns simplex-link $B $R 2Mb 100ms DropTail

$ns queue-limit $R $B 10

现在只有节点 R 的队列限制为 10。

【讨论】:

以上是关于NS2:如何为节点设置队列限制的主要内容,如果未能解决你的问题,请参考以下文章

如何为特定的 yaml-cpp 节点设置发射样式

如何为activemq设置队列最大长度

如何为具有共享 NFS 挂载的 2 个节点设置 Jackrabbit Repository.xml?

如何将节点传递给 BalkanOrgchart js 以及如何为每个节点应用颜色?

NS2,节点IP寻址

ns2.34移植leach协议