DV маршрутизация плюс Ручная маршрутизация в ns2 - PullRequest
0 голосов
/ 25 апреля 2018

Я пытаюсь реализовать топологию BCube в ns2.Мой сценарий Tcl (раздел, который я изменил) выглядит так:

if {$enableMultiPath == 1} {
    Node set multiPath_ 1 
    if {$perflowMP != 0} {
    Classifier/MultiPath set perflow_ 1
    }
}


set S [expr $topology_ports * $topology_ports] ; #number of servers
if {$enable_bp == 1} {
    set totalNodes [expr $S + $topology_ports * $topology_levels]
    Node set totalNodes_ $totalNodes
    Node set nodeBandwidth_ [expr $link_rate * 1000000000]
    Classifier/MultiPath set flowCheck_ 3

}
set UCap [expr $link_rate * $topology_ports / $topology_ports / $topology_x] ; #uplink rate

puts "UCap: $UCap" 

for {set i 0} {$i < $S} {incr i} {
    set s($i) [$ns node]
}

for {set i 0} {$i < $topology_ports} {incr i} {
    set n($i) [$ns node]
}

for {set i 0} {$i < $topology_ports} {incr i} {
    set a($i) [$ns node]
}

$ns rtproto Manual $s(0) $s(1) $s(2) $s(3) $s(4) $s(5) $s(6) $s(7)
$ns rtproto DV $s(8) $s(9) $s(10) $s(11) $s(12) $s(13) $s(14) $s(15) $n(0) $n(1) $n(2) $n(3) $a(0) $a(1) $s(2) $a(3)
Agent/rtProto/DV set advertInterval [expr 2*$sim_end] 

############# Topoplgy #########################

for {set i 0} {$i < $S} {incr i} {
    set j [expr $i % $topology_ports]
    $ns duplex-link $s($i) $n($j) [set link_rate]Gb [expr 2 * $host_delay + $mean_link_delay] $switchAlg     
    $ns duplex-link-op $s($i) $n($j) orient right-up; #queuePos -0.5
}

set j 0 
for {set i 0} {$i < $S} {incr i} {
    $ns duplex-link $s($i) $a($j) [set link_rate]Gb [expr $host_delay + $mean_link_delay] $switchAlg     
    $ns duplex-link-op $s($i) $a($j) orient right-up; #queuePos -0.5    
    if {[expr $i + 1] % $topology_ports == 0} {
        incr j
    }
}

[$s(0) get-module "Manual"] add-route-to-adj-node -default $n(0)
[$s(1) get-module "Manual"] add-route-to-adj-node -default $n(1)
[$s(2) get-module "Manual"] add-route-to-adj-node -default $n(2)
[$s(3) get-module "Manual"] add-route-to-adj-node -default $n(3)
[$s(4) get-module "Manual"] add-route-to-adj-node -default $n(0)
[$s(5) get-module "Manual"] add-route-to-adj-node -default $n(1)
[$s(6) get-module "Manual"] add-route-to-adj-node -default $n(2)
[$s(7) get-module "Manual"] add-route-to-adj-node -default $n(3)

[$s(0) get-module "Manual"] add-route-to-adj-node -default $a(0)
[$s(1) get-module "Manual"] add-route-to-adj-node -default $a(0)
[$s(2) get-module "Manual"] add-route-to-adj-node -default $a(0)
[$s(3) get-module "Manual"] add-route-to-adj-node -default $a(0)
[$s(4) get-module "Manual"] add-route-to-adj-node -default $a(1)
[$s(5) get-module "Manual"] add-route-to-adj-node -default $a(1)
[$s(6) get-module "Manual"] add-route-to-adj-node -default $a(1)
[$s(7) get-module "Manual"] add-route-to-adj-node -default $a(1)

Я получаю следующую ошибку в этом файле tcl.

invalid command name ""

    while executing

"[$s(0) get-module "Manual"] add-route-to-adj-node -default $n(0)"

    (file "websearch_bcube.tcl" line 361)

Когда я закомментирую ручную конфигурацию в конце и $ns rtproto Manual $s(0) $s(1) $s(2) $s(3) $s(4) $s(5) $s(6) $s(7), я получаю следующую ошибку.

wrong # args: should be "set varName ?newValue?"
    while executing
"set nodeslist _o36 _o39 _o42 _o45 _o48 _o51 _o54 _o57 _o60 _o63 _o66 _o69 _o72 _o75 _o18 _o81"
    ("eval" body line 1)
    invoked from within
"eval "set nodeslist $args""
    (procedure "Agent/rtProto/DV" line 5)
    (Agent/rtProto/DV init-all line 5)
    invoked from within
"Agent/rtProto/DV init-all _o36 _o39 _o42 _o45 _o48 _o51 _o54 _o57 _o60 _o63 _o66 _o69 _o72 _o75 _o18 _o81"
    ("eval" body line 1)
    invoked from within
"eval Agent/rtProto/$proto init-all $rtprotos_($proto)"
    ("foreach" body line 2)
    invoked from within
"foreach proto [array names rtprotos_] {
eval Agent/rtProto/$proto init-all $rtprotos_($proto)
}"
    invoked from within
"if [info exists rtprotos_] {
foreach proto [array names rtprotos_] {
eval Agent/rtProto/$proto init-all $rtprotos_($proto)
}
} else {
Agent/rtProto/St..."
    (procedure "_o84" line 3)
    (RouteLogic configure line 3)
    invoked from within
"[$self get-routelogic] configure"
    (procedure "_o5" line 5)
    (Simulator run line 5)
    invoked from within
"$ns run"
    (file "websearch_bcube.tcl" line 790)

Может кто-нибудь подсказать мне, как я могу включить DV-маршрутизацию для набора узлов и использовать ручную маршрутизацию для остальных узлов (с идентификаторами 0 - 7).Если есть какой-либо другой способ достижения той же функциональности, пожалуйста, дайте мне знать.

...