ns2 上的 tcl 脚本错误(没有这样的变量)

tcl script error on ns2 (no such variable)

我尝试 运行 此处提供的示例代码:http://simula.stanford.edu/~alizade/Site/DCTCP_files/dctcp-ns2-rev1.0.tar.gz

根据自述文件,补丁已成功应用,但在执行示例代码时,出现以下错误:

ns: myTrace file3: 无法读取 "dctcp_alpha_": 没有这样的变量
    在执行时
"subst $[subst $var]"
    (程序“_o154”第 5 行)
    (反对下一行 5)
    从内部调用
“_o154 下一个 dctcp_alpha_”
    ("eval" 正文第 1 行)
    从内部调用
"eval $self next $args"
    (程序“_o154”第 18 行)
    (代理设置第 18 行)
    从内部调用
“$tcp($i) 设置 dctcp_alpha_”
    (程序"myTrace"第8行)
    从内部调用
"myTrace file3"

如何解决?

构建示例:tar xvf ns-allinone-2.35_gcc482.tar.gz

https://drive.google.com/file/d/0B7S255p3kFXNSGJCZ2YzUGJDVk0/view?usp=sharing

cd ns-allinone-2.35/ns-2.35/

patch -p1 --ignore-whitespace -i dctcp.patch

光盘../

./安装

cd ns-2.35/

须藤安装

cp ns ns235-dctcp

sudo cp ns235-dctcp /usr/local/bin/

  • 运行模拟:ns235-dctcpsimpleDumbbell.tcl

.. 创建文件 mytracefile.tr 2.1MB,thrfile.tr 10.2kB。 (并且queue.tr:0B)。

您的错误:您可能使用了错误的可执行文件 'ns'。

安全的方法是使用新名称修补 'ns' 的 DCTCP 副本。

并且在系统路径中有一个位置,比如 /usr/local/bin/ns235-dctcp

    -

我曾经遇到过与您提到的完全相同的问题:

  ns: myTrace file3: can't read "dctcp_alpha_": no such variable 
           while executing
  st $[subst $var]"
       (procedure "_o154" line 5)
       (Object next line 5)
       invoked from within
    ...

1.The 问题是您需要 编译 在 运行 打补丁后

Knud Larsen 在他的回答中提到的那样,在 运行 宁以下补丁之后:

cd ns-allinone-2.35/ns-2.35/

patch -p1 --ignore-whitespace -i dctcp.patch

您需要进入/ns-allinone-2.35/文件夹,进行编译:

cd ../

./install

cd ns-2.35/

sudo make install
  1. 不同于Knud Larsen,我没有重命名另一个ns。我运行直接用ns命令模拟:

    ns simpleDumbbell.tcl

它对我有用。

希望这对您有所帮助:)

ns: _o83 selfish: 
    (_o83 cmd line 1)
    invoked from within
"_o83 cmd selfish"
    invoked from within
"catch "$self cmd $args" ret"
    invoked from within
"if [catch "$self cmd $args" ret] {
set cls [$self info class]
global errorInfo
set savedInfo $errorInfo
error "error when calling class $cls: $args" $..."
    (procedure "_o83" line 2)
    (SplitObject unknown line 2)
    invoked from within
"_o83 selfish"