Network programming 如何在nam动画和命名中显示ns2节点的标签

Network programming 如何在nam动画和命名中显示ns2节点的标签,network-programming,simulation,ns2,Network Programming,Simulation,Ns2,我正在尝试在ns2中构建一个拓扑,如果在nam动画中节点有名称,它会帮助我,这样我就可以更容易地理解它们是核心交换机还是加总或ToR 我使用循环来创建它们,并使用label属性设置标签。我的代码如下所示 for {set i 0} {$i < 4} {incr i} { set c($i) [$ns node] $c($i) color red $c($i) shape hexagon $c($i) label "corei" $c($i) lab

我正在尝试在ns2中构建一个拓扑,如果在nam动画中节点有名称,它会帮助我,这样我就可以更容易地理解它们是核心交换机还是加总或ToR

我使用循环来创建它们,并使用label属性设置标签。我的代码如下所示

for {set i 0} {$i < 4} {incr i} {
    set c($i) [$ns node]
    $c($i) color red
    $c($i) shape hexagon
    $c($i) label "corei" 
    $c($i) label-color black
    $c($i) label-at up
}


$ns duplex-link $c(1) $c(2) 1Gb 10ms DropTail
$ns duplex-link $c(3) $c(2) 1Gb 10ms DropTail
$ns duplex-link $core($i) $pod($j_$k) 1Mb 10ms DropTail
工作,如果它是

$c($i) label "core$i"
它不会产生任何错误,但就像我说的,没有标签

除此之外,我试着为我的节点使用一种命名格式,如pod_layer_pos,我在上读了文章,但我想知道当使用数组-关联-时,是否可以在括号内计算多个变量。例如,我可以有以下内容吗

for {set i 0} {$i < 4} {incr i} {
    set c($i) [$ns node]
    $c($i) color red
    $c($i) shape hexagon
    $c($i) label "corei" 
    $c($i) label-color black
    $c($i) label-at up
}


$ns duplex-link $c(1) $c(2) 1Gb 10ms DropTail
$ns duplex-link $c(3) $c(2) 1Gb 10ms DropTail
$ns duplex-link $core($i) $pod($j_$k) 1Mb 10ms DropTail
在命名约定中,通常是否有一种特定的方法来对节点集进行分组。我想的是一个胖树拓扑,因此对于k=4,我们有4个核心交换机,4个pod,有2层,每个层有2个交换机,下层连接到2个服务器/主机。所以我想把核心放在一个数组中,并使用循环将它们与所有其他节点连接起来,这些节点的名称类似于

pod[0-(k-1)]\u层[0-1]\u开关[0-k/2]

下面的方法似乎有效,但我想确保这不是侥幸

set p 0
set l 0
set s 0

set pod(0,0,0) [$ns node]
set pod(0,0,1) [$ns node]

for {set j 0} {$j < 1} {incr j} {
    $ns duplex-link $pod($p,$l,$j) $pod($p,$l,[expr ($j+1)]) 1Gb 10ms DropTail
}
设置p0
设l0
设置为0
设置pod(0,0,0)[$ns节点]
设置pod(0,0,1)[$ns节点]
对于{set j 0}{$j<1}{incr j}{
$ns双工链路$pod($p,$l,$j)$pod($p,$l,[expr($j+1)])1Gb 10ms垂尾
}

NS2是一种基于时间的事件驱动模拟工具。一旦开始模拟,节点的状态将重置。因此,在模拟开始后应该重新分配标签。要格式化代码,可以将其缩进4个空格,或者选择一个代码块,然后单击
{}
按钮;同样地,按下Ctrl-K键(我格式化了这个代码块)