这是 nam 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
nam - VINT/LBL 网络动画师
概要
南 [ -g 几何 [ -t 图输入 ][ -i 间隔 [ -P 对等名称 [ -N 应用名称 [ -c
缓存大小 [ -f 配置文件 [ -S ] 跟踪文件
商品描述
南 是一个基于 Tcl/TK 的动画工具,用于查看网络模拟轨迹和真实世界
数据包跟踪数据。
使用 nam 的第一步是生成跟踪文件。 跟踪文件应包含
拓扑信息,例如节点、链接以及数据包跟踪。 详细格式为
在跟踪文件部分中描述。 通常,跟踪文件是由 ns(1)。 中
ns 仿真,用户可以生成拓扑配置、布局信息和数据包
在 ns 中使用跟踪事件进行跟踪。 参考 ns(1) 了解详细信息。
生成跟踪文件后,它就可以由 nam 进行动画处理了。 启动时,nam
将读取跟踪文件,创建拓扑,弹出一个窗口,必要时进行布局,然后
在跟踪文件中的第一个数据包时暂停。 通过其用户界面,nam
提供对动画许多方面的控制。 将描述这些功能
详细信息在用户界面部分。
这个版本的 nam 是高度实验性的 - 会有错误!。 请邮寄 ns-
[电子邮件保护] 如果您遇到任何错误,或对所需的建议
功能。
配置
-g 启动时指定窗口的几何形状。 格式在 X(1)
-t [信息不全] 指示nam使用tkgraph,并指定输入文件nam
对于 tkgraph。
-i [此选项的信息可能不准确] 指定 率 (真实)毫秒
作为屏幕更新率。 默认速率为 50 毫秒(即每秒 20 帧)。
请注意,X 服务器可能无法跟上此速率,在这种情况下
动画将以 X 服务器允许的速度运行(CPU 利用率为 100%)。
-N 指定此 nam 实例的应用程序名称。 此应用程序名称可能稍后
用于对等同步。
-P 指定执行将被执行的 peer nam 实例的应用程序名称
与此 nam 实例的执行同步。 参考上面的选项
(-N) 作为如何指定应用程序名称。
一般用法是: (1) 通过以下方式启动第一个 nam 实例(从属):
南 -N <姓名 #1> <trace 文件 姓名 #1>
然后启动第二个 nam 实例(这将是主实例):
南 -N <姓名 #2> <trace 文件 姓名 #2>
然后每个动画控制(播放,停止,后退,但是 排除 其他检查
和监控等交互操作)将在两者之间同步
实例。
请注意,由于此机制使用 Tcl 的发送命令,因此需要
您的 X 服务器使用 xauth 作为身份验证。 具体来说,您应该添加选项
`-auth ' 当您启动 X 服务器时。 没有这个
选项,X 将使用 xhost 作为身份验证,这太弱了,考虑
不安全。 有关详细信息,请参阅 Xsecurity、xauth 和 Xserver 的手册页,以及
可用的身份验证协议。
-c [信息不完整] 用于存储 'active' 的缓存的最大大小
做向后动画时的对象。
-f 启动时加载的初始化文件名。 在这个文件中,用户
可以定义将在跟踪文件中调用的函数。 一个例子是
ns中动态链接的'link-up'和'link-down'事件。 (参考 $ns 模型
有关详细信息,例如 ns 目录中的 tcl/ex/simple-dyn.tcl)。 例子
初始化文件可以在 ex/sample.nam.tcl 和 ex/dynamic-nam.conf 中找到。
-S 启用同步 X 行为,以便更轻松地进行图形调试。 对于 UNIX
仅运行 X 的系统。
跟踪文件 是包含要动画的跟踪数据的文件的名称(格式
在下面的跟踪文件部分中描述)。 如果 跟踪文件 无法读取, 南 将尝试打开
跟踪文件.南。
对象 IN NAM
nam 使用以下构建块制作动画:节点、链接、队列、数据包、代理、
监视器。 它们的定义如下:
节点 节点是从跟踪文件中的“n”跟踪事件创建的。 它代表一个
源/主机/路由器等。如果有重复的定义,nam 将终止
同一个节点。 节点可能有多种形状,(圆形、方形和六边形),但一次
创造它不能改变它的形状。 节点也可能有很多颜色,它可以改变
它在动画期间的颜色。 参考 ns(1) 用于相关的跟踪事件。
链接 在节点之间创建链接以形成网络拓扑。 南链接是
内部单工,但对用户不可见。 跟踪事件“l”创建
两个单工链接和其他必要的设置,因此它看起来与用户相同
双工链路。 链接可能有多种颜色,它可以在动画过程中改变颜色。
请参阅 ns(1) 用于相关的跟踪事件。
队列 队列需要在两个节点之间的 nam 中构建。 与链接不同, nam 队列是
关联到 单 关联。 跟踪事件 'q' 只为
单工链接。 在 nam 中,队列被可视化为堆叠的数据包。 数据包是
沿一条线堆叠,该线与水平线的夹角为
在跟踪事件“q”中指定。
包 数据包被可视化为带有箭头的块。 箭头方向表示
数据包的流向。 排队的数据包显示为小方块。 一包
可能会从队列或链接中删除。 丢弃的数据包显示为旋转
方块,然后消失在屏幕的尽头。 丢弃的数据包不可见
在向后动画期间。
代理人 代理用于将协议状态与节点分开。 他们总是相关的
与节点。 一个代理有一个名字,它是一个 独特 代理的标识符。 这是
显示为一个正方形,里面有它的名字,还有一条线将正方形连接到它的
关联节点。
自动化 布局
在 nam 中,拓扑由交替的节点对象和边对象指定。 但要
以易于理解的方式显示拓扑,需要一种布局机制。 目前南
提供两种布局方式。
首先,用户可以指定边缘的方向。 边缘方向是
边缘和水平线,在区间 [0, 2*pi) 中。 在布局期间,nam 将尊重
给定的边缘方向。 一般会先选择一个参考节点,然后放置
其他节点使用边方向和边长,这是由链路延迟决定的。
这适用于小型和手动生成的拓扑。
其次,当我们处理随机生成的拓扑时,无论大小,我们
可能想要自动进行布局。 一种自动图形布局算法 ([1] [2]) 是
适应和实施。 该算法的基本思想是将图建模为球
(节点)由弹簧(边)连接。 球会相互排斥,而弹簧会拉动
他们在一起。 该系统将(希望)在一些迭代后收敛。 在实践中,
经过少量迭代(数十或数百次)后,大多数图会收敛到一个
视觉上可理解的结构。
有 3 个参数可以调整自动布局过程:
Ca 吸引力常数,控制球之间的弹簧力。 默认
值为 0.15
Cr 排斥力常数,控制球之间的排斥力。
默认值为 0.15
迭代次数
自我解释。 默认值为 10。
对于具有数十个节点的小型拓扑,使用默认参数(可能带有
再进行 20 到 30 次迭代)就足以产生一个漂亮的布局。 但对于更大的
拓扑,仔细的参数调整是必要的。 以下是经验方法
布局由佐治亚理工学院的 ITM 生成的 100 节点随机传输存根拓扑
互联网拓扑建模器。 首先,设置Ca_和Cr_为0.2,做大约30次迭代,
然后将 Cr_ 设置为 1.0,Ca_ 设置为大约 0.01,然后进行大约 10 次迭代,然后设置 Ca_
到 0.5,Cr_ 到 1.0,做大约 6 次迭代。
“ USER 接口
顶部 南 南 窗口是一个 菜单 酒吧。 左侧有两个下拉菜单
菜单栏。 “文件”菜单当前仅包含“退出”按钮。 它有一个“打开...”
按钮也是如此,但尚未实现。 “查看”菜单有 4 个按钮:
- 新视图按钮:创建相同动画的新视图。 用户可以滚动和缩放
在新视图上。 所有视图都将同步动画。
- 显示监视器复选框:如果选中,将在窗口的下半部分显示一个窗格,
将显示监视器的位置。
- 显示自动布局复选框:如果选中,将在窗口的下半部分显示一个窗格,
它包含输入框和一个用于自动布局调整的按钮。 这个盒子可以
并不总是启用。 当跟踪文件有自己的布局规范时,这
框将被禁用。 当且仅当跟踪文件没有完整的布局
规范(即,每个链接都在跟踪中指定了方向),这将
框被启用。
- 显示注释复选框:如果选中,将在下半部分显示一个列表框
窗口,用于按时间升序列出注释。
“帮助”菜单位于菜单栏的右侧。 它有两个按钮。 点击
“帮助”按钮将弹出一个新窗口,显示有关 nam 使用情况的信息。
单击“关于”按钮将弹出一个新窗口,显示历史和状态
南。
加速键
ALT+'f' 将下拉“文件”菜单。 ALT+'v' 将下拉“打开...”菜单。
ESC 将中止正在进行的菜单选择。
在菜单栏下方,有一个 控制 酒吧 包含 6 个按钮、一个标签和一个
小滚动条(比例尺)。 可以按任何顺序单击它们。 我们将解释它们
从左到右。
按钮 1 (<<)
倒带。 单击时,动画时间将以 25 倍的速度返回
当前屏幕更新率。
按钮 2 (<)
落后的玩法。 单击时,动画将及时向后播放。
按钮 3(方形)
停止。 单击时,动画将暂停。
按钮 4 (>)
前戏。 单击时,动画将按时间升序播放。
按钮 5 (>>)
快进。 点击时,动画时间会以25次的速度前进
当前屏幕更新率。
按钮 6(雪佛龙标志)
放弃。
时间标签
显示当前动画时间(即跟踪文件中的模拟时间)。
费率滑块
控制屏幕更新率(动画粒度)。 目前的汇率是
显示在滑块上方的标签中。
在第一个控制栏下方,有 主要 屏 显:,其中包含一个工具栏和一个主
带有两个平移滚动条的视图窗格。 通过菜单按钮“文件/新建”创建的所有新视图
view' 将具有这三个组件。
工具栏包含两个缩放按钮。 带有向上箭头的按钮放大,按钮
向下箭头缩小。 两个滚动条用于平移主动画视图。
单击主视图窗格中任何对象上的左按钮将弹出一个
单击点的信息窗口。 对于数据包和代理对象,有一个
弹出窗口中的“监视”按钮。 单击该按钮将显示监视器窗格
(如果它不存在),并为该对象添加一个监视器。 对于链接对象,会有一个
“图表”按钮。 点击那个按钮会弹出另一个弹出窗口,用户可以在那里
选择绘制两个单工之一的带宽利用率图或链路损耗图
点击的双工链接的链接。 这些功能也可在视图中使用
由“文件/新视图”创建。 注意: 这些功能是 高度 实验 AND
不稳定 在此版本 (v1.0a2) 中。
在我们迄今为止讨论的小工具下方,可能有也可能没有 显示器 面包,
取决于是否设置了“查看/显示监视器”复选框。 (默认为未设置)。 全部
监视器将显示在此窗格中。 监视器看起来像窗格中的一个大按钮。
目前只有数据包和代理可能有监视器。
数据包监视器显示大小、ID 和发送时间。 当数据包到达其
目的地,监视器仍然在那里,但说数据包是不可见的。
代理监视器显示代理的名称,以及是否有任何变量跟踪
与此代理相关联,它们也会显示在那里。
在监视器窗格下方(或在监视器窗格不存在的情况下),有一个 时间
滑块. 它看起来像一个缩放规则,带有一个标签“TIME”,可以沿着
规则。 它用于设置当前动画时间。 当您拖动“TIME”标签时,当前
动画时间将显示在上方控制栏的时间标签中。 左边缘
滑块的代表跟踪文件中最早的事件时间和右边缘
代表最后一个事件时间。
单击规则(不是标签)上的左键与 Rewind 或 Fast 具有相同的效果
向前,取决于点击位置。
这款 自动表 布局 面包 可以是可见的或隐藏的。 如果可见,则低于时间
滑块。 它有三个输入框和一个重新布局按钮。 带标签的输入框让
用户调整两个自动布局常量,以及下一次的迭代次数
布局。 当用户在任何输入框中按 ENTER 或单击“重新布局”按钮时,
将执行该次数的迭代。 请参阅自动布局部分以了解
使用细节。
nam 窗口的底部组件是一个 注解 列表框,其中注释是
显示。 一个注解是一个(时间,字符串)对,它描述了一个事件发生在
那时。 参考 ns(1) 用于生成注释的函数。 双击一个
列表框中的注释会将 nam 带到记录该注释的时间。
当指针在列表框内时,单击右键将停止动画并显示
带有 3 个选项的弹出菜单:添加、删除、信息。 `Add' 会弹出一个对话框
文本输入并添加具有当前动画时间的新注释条目。 用户可以
在对话框中键入注释字符串。 `Delete' 将删除注释条目
由指针指向。 `Info' 将带出一个显示注释时间的窗格
和注释字符串。
键盘 指令
[不完整,但准确] 大多数按钮都有键盘等效项。 注意他们只
当鼠标光标在 nam 窗口内时的功能。
如果尚未暂停,则键入空格或回车将暂停 nam。 如果 nam 暂停,
space 或 return 将步进动画一个模拟时钟滴答。 (如果你的键盘
自动重复,按住空格是慢步通过某些部分的好方法
动画片。)
'p' 或 'P'
如果暂停,则暂停但不步进。
'c' 或 'C'
暂停后继续。
'b' 或 'B'
减少一个屏幕更新间隔的动画时间。
'r' 或 'R'
倒带。
'f' 或 'F'
快速前进。
'n' 或 'N'
移动到下一个事件。
“x”或“X”
撤消上次的费率更改
“你”或“你”
撤消上次拖动滑块的操作。
`>' 或 `.'
将粒度(加速)增加 5%。
`<' 或 `,'
将粒度(减慢)降低 5%。
SPACE 切换 nam 的暂停状态。
`q'、`Q' 或 Control-c
退出
记录 动画
要录制 nam 动画,请选择文件菜单下的“录制动画”选项。 一种
将生成一系列 namXXX.xwd 文件(其中 XXX 为帧号),每次一个-
步。 然后可以将这些文件组装成动画 GIF 或 MPEG,并使用适当的
后处理工具。
跟踪 文件 FORMAT
跟踪文件事件可以分为 6 种类型,具体取决于事件针对的对象
已关联的。 下面,我们将详细讨论它们。
数据包基本数据包事件是一个类型字符,后跟一些标签:
-t -e -s -d -C -一世
是其中之一:
`h' - 跳。 数据包开始在从 src_addr 到
目的地地址
`r' - 接收。 数据包完成传输并开始在
目的地。
'd' - 删除。 数据包从队列或从 src_addr 到 dst_addr 的链接中被丢弃。
`+' - 进入队列。 数据包从 src_addr 到 dst_addr 进入队列。
`-' - 离开队列。 数据包从 src_addr 离开队列到 dst_addr。
Drop here 不区分从队列或链接中丢弃。 这是决定的
到下降时间。
这些标志具有以下含义:
-t 是事件发生的时间。
-e 是数据包的大小(以字节为单位)。
-s 是始发节点。
-d 是目标节点。
-C 是对话ID。
-一世是会话中的数据包 ID。
-一种是包属性,当前用作颜色ID。
可能会为某些协议添加额外的标志。 此列表可以扩展为
需要:
-P 给出一个 ASCII 字符串,指定一个逗号分隔的数据包列表
类型。 一些值是: TCP - tcp 数据包。 ACK - 通用确认。
NACK - 通用否定确认。 SRM - SRM 数据包。
-n 给出数据包序列号。
链接/队列状态
l -t -s -d -S [-C ] [-r -D ]
q -t -s -d -一种
给出链路状态转换。 它有 3 个可能的值:UP 和 DOWN
标记链接失败和恢复,COLOR 标记链接颜色变化。 如果给出颜色,
后面的 -c 预计会给出新的颜色值。 在链接事件中,
[-r -D ] 分别给出链路带宽和延迟。 它仅用于
当 nam 创建链接时,即加载跟踪文件。
指定队列位置,即沿其的链接之间的角度
显示排队的数据包和水平线。
节点状态
n -t -s -S [-C ] [-o ] [-一种]
标志‘-t’、‘-S’和‘-c’与Link中的标志具有相同的含义。 使用标志`-A'
将任意字符串添加到节点的标签。 它可以用来显示
节点状态的解释。 标志`-o'用于回溯以恢复旧的
节点的颜色。
节点标记
节点标记是围绕节点的彩色圆圈。 它们由以下人员创建:
吨-n -s -C -H [-o ]
并且可以通过以下方式删除:
吨-n -s -X
请注意,一旦创建,节点标记就不能改变其形状。 可能的选择
对于形状,圆形、方形和六边形。 它们被定义为小写字符串
完全如上。
协议状态
代理可以通过以下方式构建:
在-n -s -d
它们可以通过以下方式销毁:
在-n -s -d -X
为了可视化与代理关联的协议状态变量,我们使用名称
'特征'。 目前我们允许三种类型的功能: 定时器, 名单 简单
变量. 但只有最后一个在 ns(1) 跟踪 API。
创建代理后,可以使用以下方式随时添加或修改功能:
f -t -一种-T -n -v -o
“l”表示列表,“v”表示简单变量,“s”表示停止的计时器,“u”
对于向上计数的计时器,“d”为向下计数的计时器。
-v 给出变量的新值。 变量 值是简单的 ASCII
字符串遵守 TCL 字符串引用约定。 列表 值服从 TCL 列表
约定。 定时器 值是 ASCII 数值。
-o 给出变量的先前值。 这是为了让后退
播放动画。
可以使用以下方法删除功能:
f -t -一种-n -o -X
杂项 v -t TCL集团 脚本 绳子
用于注释,它可能包含一个任意的 tcl 脚本,在某个时间执行
给定的时间,只要脚本在一行中(不超过 256 个字符)。 这
标志和字符串的顺序很重要。
时间-一世-n
定义颜色。 颜色名称应该是颜色数据库中列出的名称之一
在 X11 (/usr/X11/lib/rgb.txt) 中。 在这个定义之后,颜色可以被引用
使用它的 id。
示例
使用 onworks.net 服务在线使用 nam