使用 CORE GUI
下图显示 CORE GUI:
概述
GUI 用于在画布上绘制节点和网络设备,将它们连接在一起,以创建模拟的网络会话。
按下启动按钮后,CORE 将通过这些阶段进行,保持在运行时阶段。会话停止后,CORE 将进入数据收集阶段,然后卸载模拟状态。
CORE 可自定义以在每个状态执行任何操作。有关何时达到这些会话状态,请参阅会话菜单上的Hooks…
必要条件
除了安装CORE之外,还必须运行CORE守护进程。
在命令行中使用systemd或sysv。
# systemd
sudo systemctl daemon-reload
sudo systemctl start core-daemon
# sysv
sudo service core-daemon start
还可以直接从命令行调用守护进程,如果您想直接查看日志输出,这很有用。
# direct invocation
sudo core-daemon
操作模式
核心GUI有两种主要操作模式,编辑和执行模式。运行GUI,通过键入没有选项Core-gui,从编辑模式开始。节点使用左侧的工具栏绘制在空白画布上,并从右键单击菜单或双击菜单进行配置。GUI 不需要作为root运行。
编辑完成后,按下绿色开始按钮(或从会话菜单中选择执行)会因 Linux 内核中的拓扑,然后进入执行模式。在执行模式下,用户可以通过双击或右键单击运行模拟的计算机进行交互。编辑工具栏消失,由执行工具栏替换,该工具栏在运行仿真时提供工具。按下红色停止按钮(或从会话菜单中选择终止)将破坏运行模拟并将 CORE 返回到编辑模式。
CORE可以通过指定 start 命令行直接在执行模式下启动场景:
core-gui --start ~/.core/configs/myfile.imn
一旦模拟开始运行,就可以关闭GUI,并出现提示询问是否应该终止仿真。之后运行时,GUI会提示重新连接到现有的会话。
GUI可以在Linux上以普通用户的身份运行。GUI可以连接到不同的地址或TCP端口使用**–address和/或–port**选项。默认值如下所示。
core-gui --address 127.0.0.1 --port 4038
工具栏
工具栏是一排按钮,沿Core gui窗口的左侧垂直运行。工具栏会根据操作模式而变化。
编辑工具栏
当 CORE 处于编辑模式(默认值)时,垂直编辑工具栏位于核心窗口的左侧。
以下是从顶部开始的每个工具栏项的简要说明。大多数工具被分组到相关的子菜单中,当您单击其组图标时会出现这些子菜单。
图标 | 名字 | 描述 |
---|---|---|
选择工具 | 用于选择、移动、配置节点的工具。 | |
启动按钮 | 开始执行模式,实例化模拟节点。 | |
链接 | 允许通过单击和拖动鼠标在两个节点之间绘制网络链接。 |
核心节点
这些节点将创建一个新的节点容器并运行相关服务。
图标 | 名字 | 描述 |
---|---|---|
路由器 | 运行Quagga OSPFv2和OSPFv3路由转发数据包。 | |
主机 | 模拟服务器机具有默认路线,运行SSH服务器。 | |
个人电脑 | 具有默认路线的基本模拟机器,默认情况下不运行任何进程。 | |
指定路由器移动自组网协议( MANET Designated Routers) | 运行 Quagga OSPFv3 MDR 路由,用于管理优化路由。(MANETs: Mobile Ad Hoc Networks 移动自组网) | |
物理路由器(PRouter) | 物理路由器代表了一个真实的试验机器。 | |
编辑 | 生成自定义节点对话。 |
网络节点
这些节点主要用于创建一个 Linux 网桥,用于以下目的。
图标 | 名字 | 描述 |
---|---|---|
集线器hub | 以太网集线器将传入的数据包转发到每个连接的节点。 | |
交换机Switch | 以太网交换机使用以太网地址哈希表智能地将传入的数据包转发给附加主机。 | |
Wireless LAN | 当路由器连接到此 WLAN 节点时,它们会加入无线网络,并绘制天线而不是连接线:WLAN节点通常根据连接的距离控制连接无线节点之间的连接。 | |
RJ45 | RJ45物理接口工具,仿真节点可链接到真正的物理接口:使用此工具,真正的网络和设备可以物理连接到实时运行模拟。 | |
Tunnel | Tool allows connecting together more than one CORE emulation using GRE tunnels. |
注释工具
图标 | 名字 | 描述 |
---|---|---|
Marker | 用于在画布上绘制标记。 | |
Oval | 用于在背景中显示的画布上绘制圆圈。 | |
Rectangle | 用于在背景中显示的画布上绘制矩形。 | |
Text | 用于在画布上放置文本字幕。 |
执行工具栏
按下"开始"按钮后,CORE 切换到"执行"模式,核心窗口左侧的编辑工具栏替换为执行工具栏,下面是此工具栏上的项,从顶部开始。
图标 | 名字 | 描述 |
---|---|---|
Selection Tool | 在执行模式下,选择工具可用于在画布周围移动节点,在节点上双击将打开该节点的外壳窗口:右键单击节点会调用该节点的运行时间选项的弹出菜单。 | |
Stop Button | 停止执行模式,终止仿真,将 CORE 返回到编辑模式。 | |
Observer Widgets Tool | 单击此放大镜图标可调用菜单以轻松选择"观察者小部件"。当"观察者小部件"处于活动状态时,图标具有较深的灰色背景,在此期间,将鼠标移到节点上会弹出该节点的信息显示。 | |
Marker | 用于在画布上画手线,在演示期间有用:标记未保存。 | |
Two-node Tool | 单击以选择开始和结束节点,并在这些节点之间运行一次性跟踪路由或节点之间连续*ping-R。*输出实时显示在结果框中,而 IP 地址则解析,并在 CORE 显示屏上突出显示完整的网络路径。 | |
Run Tool | 此工具允许轻松地在所有节点的全部或子集上运行命令。列表框允许选择任何节点。文本输入框允许输入任何命令。命令应立即返回,否则显示屏将阻止等待响应。例如,没有参数的ping命令不是个好主意。每个命令的结果都显示在结果框中。特殊文本"NODE"的第一次出现将替换为节点名称。命令不会尝试在不是路由器、PC 或主机的节点上运行,即使它们被选中。 |
菜单
菜单栏沿 CORE GUI 窗口的顶部运行,并提供对各种功能的访问。某些菜单可以通过单击顶部的虚线来分离,例如小部件菜单。
查看菜单
“视图"菜单包含用于控制绘图画布上显示的内容的项目。
Option | Description |
---|---|
Show | Opens a submenu of items that can be displayed or hidden, such as interface names, addresses, and labels. Use these options to help declutter the display. These options are generally saved in the topology files, so scenarios have a more consistent look when copied from one computer to another. |
Show hidden nodes | Reveal nodes that have been hidden. Nodes are hidden by selecting one or more nodes, right-clicking one and choosing hide. |
Locked | Toggles locked view; when the view is locked, nodes cannot be moved around on the canvas with the mouse. This could be useful when sharing the topology with someone and you do not expect them to change things. |
3D GUI… | 运行Preferences, 3D GUI command下定义的命令启动3D GUI。这通常是一个运行SDT3D显示的脚本。SDT是NRL的脚本显示工具,它基于美国宇航局基于java的WorldWind虚拟地球软件。 |
Zoom In | Magnifies the display. You can also zoom in by clicking zoom 100% label in the status bar, or by pressing the + (plus) key. |
Zoom Out | Reduces the size of the display. You can also zoom out by right-clicking zoom 100% label in the status bar or by pressing the - (minus) key. |
工具菜单
工具菜单列出了不同的实用功能。
选择 | 描述 |
---|---|
Autorearrange all | 自动排列画布上的所有节点。具有更多链接的节点移动到中心。此模式可以在放置节点时继续运行。要关闭此自动重新排列模式,请单击带有选定工具的画布空白区域,或再次选择此菜单选项。 |
Autorearrange selected | 自动排列画布上选定的节点。 |
Align to grid | 将节点移动到网格形成中,从画布左上角的最小编号节点开始,在垂直柱中排列节点。 |
Traffic… | 调用 CORE 流量流对话框,允许为模拟配置、启动和停止 MGEN 流量流。 |
IP addresses… | 调用 IP 地址对话框来配置自动处理新接口时使用的 IPv4/IPv6 前缀。 |
MAC addresses… | 调用 MAC 地址对话框来配置生成每个接口 MAC 地址时用作最低分节的起始编号。在进行 CORE 模拟之间的隧道时,应更改此值,以防止 MAC 解决冲突。 |
Build hosts file… | 调用"构建主机文件"对话框,根据仿真中使用的 IP 地址生成 /etc/host 文件条目。 |
Renumber nodes… | 调用"重新编号节点"对话框,允许在点击数时将一个节点编号与另一个节点编号交换。 |
Experimental… | 实验选项的菜单,如转换ns-2脚本到IMUNES imn拓扑,只支持基本的ns-2功能,以及一个自动划分拓扑到分区的工具。 |
Topology generator | 打开要生成的拓扑的子菜单。您可以首先选择拓扑应该包含的节点类型,否则将默认选择路由器。节点可以随机放置、在网格中对齐或各种其他拓扑模式。下表列出了所有受支持的模式。 |
Debugger… | 打开Core Debugger执行任意 Tcl/Tk 命令。 |
拓扑发生器
模式 | 描述 |
---|---|
随机 | 节点随机放置在画布上,但未链接在一起。这可以与 WLAN 节点一起快速创建无线网络。 |
网格 | 节点位于水平行中,从左上角开始,均匀地向右间隔:节点之间不链接。 |
已连接的网格 | 节点位于 N x M(宽度和高度)矩形网格中,每个节点都连接到上面、下面、左侧和右侧的节点。 |
链 | 节点在链条中一个接一个地连接在一起。 |
星 | 一个节点放置在中心,N 节点以圆形模式环绕,每个节点都链接到中心节点。 |
周期 | 节点以圆形模式排列,每个节点都连接到其邻居,形成封闭的圆形路径。 |
轮子 | 车轮模式将节点连接在星形和循环模式的组合中。 |
立方体 | 生成节点的立方体图。 |
全连接 | 创建一个结点的分队图,每个节点都连接到所有其他节点。 |
二分图 | 创建两个节点的双分方图,具有两组脱节的顶点。 |
部件菜单
小部件是 GUI 元素,允许与运行模拟进行交互。小部件通常自动在模拟节点上运行命令,以报告某种类型的状态信息并在屏幕上显示这些信息。
周期性部件
这些小部件是主小部件菜单中可用的。其中多个小部件可以同时运行。事件循环每秒发射一次,模拟正在运行。如果启用了其中一个小部件,则此时将调用其周期性例程。每个小部件可能有一个配置对话框,也可以从小部件菜单访问。
下面是一些标准部件:
- Adjacency- 显示Quagga’s OSPFv2和OSPFv3路由协议的路由器对接状态。从每个路由器中抽取一条线,中途到相邻路由器的路由器 ID。线的颜色基于 OSPF 的对会状态,如Two-way 或 Full。要了解不同的颜色,请参阅Configure Adjacency…菜单项,vtysh命令用于转储 OSPF 邻居信息。只绘制了一半的线,因为每个路由器可能处于与另一个路由器不同的对等状态。
- Throughput- 使用ng_pipe Netgraph节点收集的统计数据来实现显示每个链接上方的每秒千位吞吐量。如果吞吐量超过一定阈值,链接将变得突出显示。对于向范围内的所有节点广播数据的无线节点,吞吐率显示在节点旁边,如果阈值超出,节点将变得圆圈化。
观察部件
这些小部件可从小部件菜单的"观察者小部件"子菜单以及工具栏上的"小部件工具"中获取。一次只能使用一个观察者小部件。在会话运行时,鼠标在节点上弹出有关该节点的信息显示。
可用的观察者小部件包括 IPv4 和 IPv6 路由表、socket信息、运行过程列表和 OSPFv2/v3 邻居信息。
观察者小部件可以由用户编辑并重新排列。从"观察者小部件"菜单中选择编辑将调用"观察者小部件"对话。显示观察者小部件列表以及用于重新排列列表的上下箭头。控件可用于重命名每个小部件、更改鼠标运行期间运行的命令以及从列表中添加和删除项目。请注意,指定命令应立即返回,以避免 GUI 显示屏出现延迟。更改将保存到 CORE 配置目录中的widgets.conf文件。
会话菜单
除了节点类型、注释、钩子、服务器和选项等全局选项外,会话菜单还有启动、停止和管理会话的条目。
Option | Description |
---|---|
Start or Stop | 启动或停止仿真,执行与绿色启动或红色停止按钮相同的功能。 |
Change sessions… | 调用包含守护进程的活动CORE会话列表的CORE Sessions对话框。显示会话的名称、节点数、起始时间和缩略图等基本信息。这个对话框允许连接到不同的会话,关闭会话,或启动一个新的会话等功能。 |
Node types… | 调用核心节点类型对话框,执行与网络层节点工具栏上的编辑按钮相同的功能。 |
Comments… | 调用CORE Session Comments窗口,其中可以指定可选的文本注释。这些注释保存在配置文件的顶部,对于描述拓扑或如何使用网络非常有用。 |
Hooks… | 调用CORE Session Hooks窗口,其中脚本可以配置为特定的会话状态。会话状态定义在下面的表格中。窗口的顶部有一个已配置的钩子列表,左下方的按钮允许添加、编辑和删除钩子脚本。新建或编辑按钮将打开一个钩子脚本编辑窗口。hook脚本是在主机上(不是在虚拟节点内)调用的shell脚本。 |
Reset node positions | 如果您已经使用鼠标或通过移动模块移动了节点,选择该项目将重置所有节点到它们在画布上的原始位置。当您第一次按下Start按钮时,就已经记录节点位置。 |
Emulation servers… | 调用CORE仿真服务器对话框进行配置。 |
Options… | 提供每个会话的选项,如是否使用的IPv4前缀,控制网络保存会话目录的能力,SDT3D支持的开/关等。 |
会话状态
状态 | 描述 |
---|---|
定义 : DEFINITION_STATE | GUI 用来告诉后端清除会话的任何状态。 |
配置 : CONFIGURATION_STATE | 当用户按下开始按钮时,节点、链接和其他配置数据将发送到后端。当用户自定义服务时,也会达到此状态。 |
实例 : INSTANTIATION_STATE | 该状态在创建节点之后,启动service前。 |
运行 : RUNTIME_STATE | 所有节点和网络都已构建并正在运行。(这与前面命名的全局实验脚本运行时的状态相同。) |
数据收集 : DATACOLLECT_STATE | 用户已按下停止按钮,但在服务停止和节点被关闭之前。这是从节点收集日志文件和其他数据的好时机。 |
关闭 : SHUTDOWN_STATE | 所有节点和网络都已被关闭和销毁。 |
连接物理网络
CORE 的模拟网络可实时运行,因此可以连接到实时物理网络。RJ45 工具和隧道工具有助于连接到现实世界。这些工具可从链接层节点菜单中获取。
当两个或多个CORE仿真连接在一起时,应该避免MAC地址冲突。开始仿真时,CORE自动为各接口分配MAC地址,起始地址为00:00:00:aa:00:00,从底字节开始递增。第二台机器上的CORE的MAC起始地址应该改变以避免冲突,使用Tool菜单的 MAC地址… 选项来设定。
RJ45 工具
CORE中的RJ45节点代表真实CORE机器上的一个物理接口。 任何真实世界的网络设备都可以连接到该接口并进行通信实时使用CORE节点。
其主要缺点是每个连接都需要一个物理接口。当物理接口被分配给CORE时,它可能无法用于其他任何事情。另一个需要考虑的问题是,您所连接的计算机或网络必须与运行CORE仿真的机器位于同一局域网。
单击“链路层节点”工具栏上,在子菜单中选择“RJ45”。单击要连接到的节点附近的画布,例如路由器、集线器、交换机或WLAN。现在点击链接工具,在RJ-45和另一个节点之间做一条链接。该RJ45节点将显示“UNASSIGNED”。双击RJ45节点,分配物理接口。将显示可用接口列表,可以双击列表中的接口名称进行选择,也可以在文本框中输入接口名称。
注意:当你按下Start按钮实例化你的拓扑时,分配给RJ45的接口将连接到CORE拓扑。系统无法再使用该接口。
如果使用802.1x VLAN,可以在CORE内部使用多个RJ45节点,并将其分配到同一个物理接口。这允许RJ45节点比物理网口更多。 但(例如交换机)硬件连接到物理端口必须支持VLAN标签,可用的带宽将被共享。
您需要在Linux主机上创建单独的VLAN虚拟设备,然后将这些设备分配给CORE内部的RJ45节点。 VLANning实际上是在CORE外部执行的,所以当CORE模拟节点收到传输给Vlan的数据包时,会自动将VLAN tag移除。VLAN基本知识
以下是在Linux下创建VLAN设备的命令示例:
ip link add link PHYS_DEV name.1 type vlan id 1
ip link add link PHYS_DEV name.2 type vlan id 2
ip link add link PHYS_DEV name.3 type vlan id 3
隧道工具
隧道工具在CORE仿真或其他主机之间构建GRE隧道。 当物理接口的数量有限或对等体位于不同的网络时,隧道技术会很有帮助。 物理接口也不需要像RJ45工具那样专用于CORE。
对端GRE隧道端点可能是另一台支持GRE隧道的CORE机器或另一台主机。 当放置一个Tunnel隧道节点时,该节点最初将显示“UNASSIGNED”。 此处需要替换为隧道对接处的IP地址。这是另一个CORE机器或物理机器的IP地址,而不是另一个虚拟节点的IP地址。
注意 GRE设备可能存在的MTU(最大传输单元)问题。gre tap设备接口MTU为1458字节,当连接到Linux网桥时,网桥的MTU也变成1458字节。如果其他网桥端口具有更高的MTU(比如1500字节),那个Linux网桥将不会对该大数据包执行分片。
GRE密钥用于识别使用GRE隧道的流。这使得多个GRE隧道存在于同一对隧道对等体之间。 当多个隧道与同一个对等体使用时,应使用一个唯一的编号。 当配置隧道对端时,确保匹配的密钥为使用。
下面是在Linux上构建隧道另一端的示例命令。 在这个例子中,CORE中的路由器拥有虚拟地址 10.0.0.20/24 ,Core主机(设为user1)的真实地址为192.168.163.130/24。 将与CORE机器连接的Linux机器(设为user2)可以通过真实的网络在192.168.163.133/24处访问。
仿真路由器与Tunnel节点相连。在隧道节点配置对话框中,输入地址192.168.163.133,密钥为1。
# 这些命令在匹配tunnel的用户user2上执行
sudo ip link add gt0 type gretap remote 192.168.163.130 local 192.168.163.133 key 1
# Linux机器上的gretap接口将从虚拟路由器节点的子网中分配一个地址10.0.0.22/24。
sudo ip addr add 10.0.0.22/24 dev gt0
sudo ip link set dev gt0 up
现在虚拟路由器应该可以ping通Linux机器User2了:
# from the CORE router node
ping 10.0.0.22
# 如果想要直接ping物理地址加条路由即可
ip route add 192.168.163.133 via 10.0.0.22
User2应该能够ping通内核仿真内部:
# from the tunnel peer
ping 10.0.0.20
要调试此配置,tcpdump可以在gretap设备上运行,也可以在CORE或Linux机器的物理接口上运行。 确保防火墙没有阻断GRE流量。
与主机通信
节点不一定要可以访问到运行core-gui或core-daemon的主机。例如,在一个节点上运行一个X11应用程序可以使用特定的通信方式让应用程序连接到X服务器以进行图形化显示。有几种不同的方式可以从节点连接到主机,反之亦然。
控制网络
通过控制网络是与主机连接的最快方式。 通过控制网络,主机可以在节点上启动X11应用程序。首先要在该节点上启用SSH服务,并且使用SSH来进行从主机到该节点的X11服务转发。
# 节点n5使用ssh来转发主机运行x协议标准的时钟xclock程序界面
ssh -X 172.16.0.5 xclock
注意,可以使用coresendmsg将消息发送到主机上运行的CORE守护进程与运行的仿真交互 (需要 /etc/core/core.conf 的配置文件中设定监听地址为广播即 listenaddr = 0.0.0.0 ) 例如,一个节点可以通过上述方法移动自己或其他节点,或者根据某个节点的状态更改其图标。
其他方法
还有其他方法可以将主机与节点连接起来。RJ-45工具可以配合虚拟接口访问节点:
# 或者使用modprobe命令创建dummy设备
sudo modprobe dummy numdummies=1
# 但是使用ip link show无法查看到,不知是否失效,
# 推荐使用ip命令创建
sudo ip link add dummy0 type dummy
# 使用方法
ip link del dev <dummy-interface>
ip link add dev <dummy-interface> type dummy
ip addr add <IPv4>/32 dev <dummy-interface>
ip link set <dummy-interface> up
主机上应该出现一个 dummy0 接口。使用RJ45工具分配给dummy0,并将其链接到您的场景中的一个节点。(相当于core仿真后会建立一个网桥,上述dummy0设备会attach到该网桥)会话启动后,需要在主机上配置地址。
ip link show type bridge
# 根据上述命令确定core仿真的网桥名称
# 在与链接节点相同的网络上分配一个IP地址
sudo ip addr add 10.0.1.2/24 dev 该设备名
在上面的例子中,主机将有地址10.0.1.2,而连接到RJ45的节点可能有地址10.0.1.1。
构建样本网络
有线网络
有线网络是使用链接工具创建的,以绘制两个节点之间的链接。这将自动绘制一条代表以太网链路的红线,并在网络层节点上创建新的接口。
双击链接以调用链接配置对话框。在这里您可以更改该链路的带宽、延迟、丢失和重复速率参数。您还可以修改链接的颜色和宽度,从而影响其显示。
链路层节点用于对有线网络进行建模。这些不会产生 一个单独的网络堆栈,而是使用Linux网桥实现。 这些是集线器、交换机和无线局域网节点。集线器从 每个连接的链路的传入链路,而交换机的行为更像是 以太网交换机,并跟踪连接的对等体的以太网地址, 只转发单播流量到适当的端口。
无线网络
WLAN节点允许您构建无线网络,移动节点会影响它们之间的连接。一对节点之间越紧密,连接越强;节点之间越远连接越弱。无线局域网(WLAN)节点以小云的形式出现。根据您的建模需求,WLAN提供了多个级别的无线仿真保真度。
WLAN工具可以通过插件进行扩展,以实现不同级别的无线保真度。基本的开/关范围是所有平台上可用的默认设置。其他插件以更高的复杂性和CPU使用量为代价提供更高的保真度。某些插件的可用性因平台而异。关于无线模型类型的简要概述,请参见下表。
模型 | 类型 | 支持平台 | 保真度 | 描述 |
---|---|---|---|---|
basic | on/off | Linux | Low | 使用ebtables的以太网桥接 |
EMANE | Plug-in | Linux | High | TAP设备连接到EMANE模拟器的可插拔的MAC和PHY无线射频模型 |
要快速构建无线网络,您可以首先将多个路由器节点放置在画布上。如果您安装了 Quagga MDR 软件,建议您使用mdr节点类型来减少开销路由。接下来从链接层节点子菜单选择无线局域网。首先通过双击云图标设置所需的 WLAN 参数。然后,您可以通过右键单击 WLAN 并选择链接到所有路由器来链接所有路由器。
将路由器连接到 WLAN 会导致出现小天线,但不会绘制红色链接线。路由器可以具有多个无线链接以及无线和有线链接(但是您需要重新手动设置路由。mdr 节点类型将生成路由配置,使 OSPFv3 具有 MANET 扩展。这是波音公司开发的对QuaggaOSPFv3的扩展,可减少洪泛费用,并优化移动临时(MANET)移动自组网络的洪泛过程。
WLAN 的默认配置设置为使用基本basic模型,使用 WLAN 配置对话框中的基本选项卡。选择此模型会导致core-daemon基于屏幕像素位置来计算节点之间的距离。使用 范围滑块(Range slider) 为无线网络设置屏幕像素的数字范围。当两个无线节点在它们之间画了一条绿线,它们是相连的。两个距离超过像素距离的无线节点不被连接。在执行模式中,用户可以通过单击和移动无线节点拖动它们,无线链接就会被动态创建或断开。
EMANE 选项卡列出了可用于无线网络的可用 EMANE 模型。有关使用 EMANE 的详细信息,请参阅Emane。
移动性脚本
CORE下述方法来设置脚本移动性。
选项 | 描述 |
---|---|
ns-2 script | 该脚本指定了绝对位置或具有速度的路径点。位置用笛卡尔坐标给出。 |
CORE API | 外部实体可以通过发送带有更新的X,Y坐标的CORE API Node消息来移动节点;coresendmsg实用程序允许shell脚本生成这些消息。 |
EMANE events | 有关使用EMANE脚本移动节点的详细信息,请参见[EMANE .md]。位置信息通常以纬度、经度和高度给出。 |
对于第一种方法,可以使用文本编辑器或BonnMotion之类的工具创建移动脚本,并将脚本与使用WLAN配置对话框中的一个无线连接起来,点击 ns-2 mobility script… 按钮, 并在 ns2script 中的配置对话框设置 mobility script file 字段
BonnMotion安装教程:官网下载 BonnMotion 安装包,解压,进入目录运行./install即可(需要事先安装jdk,sudo apt-get install default-jdk)。官方使用指南点这里进行下载。
下面是一个为10个节点创建BonnMotion脚本的示例:
bm -f sample RandomWaypoint -n 10 -d 60 -x 1000 -y 750
bm NSFile -f sample
# 第二行是将sample.movements转为sample.ns_movements ns脚本移动数据
# 自己测试发现 /usr/bin/中并没有 bm,执行文件在安装包文件夹下 ./bin/bm
# 创建个软链接 sudo ln -s ~/桌面/bonnmotion-3.0.1/bin/bm /usr/bin
在启动Execute模式并且其中一个WLAN节点具有移动性时 脚本时,将出现一个移动脚本窗口。此窗口包含控件 启动、停止和重置移动性脚本的运行时间,loop 复选框设置脚本连续重复调用。分辨率resolution 文本框包含每个计时器事件之间的毫秒数;较低的值使移动性看起来更流畅,但消耗更多的CPU时间。
ns-2移动脚本的格式如下:
# nodes: 3, max time: 35.000000, max x: 600.00, max y: 600.00
$node_(2) set X_ 144.0
$node_(2) set Y_ 240.0
$node_(2) set Z_ 0.00
$ns_ at 1.00 "$node_(2) setdest 130.0 280.0 15.0"
前三行设置节点2的初始位置。上面例子中的最后一行导致节点2以速度 15 向目的地 (130,280) 移动。所有单位都是屏幕坐标,速度以每秒为单位。总脚本时间是在所有节点到达它们的路径点之后得到的。 最初,移动脚本对话框中的时间滑块并不准确。
示例移动脚本(及其相关的拓扑文件)可以在 configs/ 目录中找到。
多画布
CORE 支持多个画布,用于组织模拟节点。在不同的画布上运行的节点可以链接在一起。要创建一个新的画布,从 canvas 菜单中选择 new 。一个新的画布标签出现在左下角。点击一个画布标签切换到它画布。双击其中一个选项卡来调用 Manage Canvases 对话框盒子。在这里,画布可以重命名和重新排序,你可以很容易地切换到并选择其中一幅画布。
每个画布维护自己的一组节点和注释。画布之间要构建联系首先选择一个节点,右键单击它,选择 Create link to ,选择列表中的目标画布,以及该子菜单中的所需节点。之后将绘制一个伪链接,表示上两个节点之间的链接到不同的画布。双击箭头末端的标签即可跳转到它所链接的画布。
检查仿真灯(CEL)
CEL(Check Emulation Light)位于GUI的右下角,这是一个黄色图标,指示运行模拟中的一个或多个问题。单击CEL将调用CEL 对话框。Check Emulation Light对话框包含从CORE守护进程接收到的异常列表。异常列表包含有时间、严重级别、可选节点号和来源这些信息。当CEL闪烁时,这表示一个或多个致命异常。
具有致命严重级别的异常表明无法创建模拟的一个或多个基本部分,例如无法创建桥或名称空间,或者无法为基于eman1的网络启动eman1进程。单击异常将显示该异常的详细信息。如果指定了节点号,当选中异常时,该节点将在画布上高亮显示。异常源是一个文本字符串,用于帮助跟踪异常发生的位置;例如,UserDefined服务的验证命令失败时,会出现 “service:UserDefined” 。
对话框底部有一些按钮,用于清除异常列表和查看CORE守护进程和节点日志文件。
注意: 在批处理模式下,从CORE守护进程接收到的异常将显示在控制台上。
场景配置文件
场景配置拓扑文件保存为 .xml 或 .imn 。你可以轻松地编辑这些文件与文本编辑器。当您编辑拓扑时文件,您将需要停止模拟(如果它正在运行)并重新加载文件。
.imn 文件格式来自IMUNES,主要成分是 节点、链接、etc的Tcl链表。 拓扑文件中的制表符Tab和空格有严格规范。该文件首先列出每个节点,然后列出链接、注释、画布和选项。每个实体都有一个包含在花括号中的块。第一个块缩进四个空格。 在 network-config 块(以及任何 custom–config 块)中,缩进是一个制表符。
注意: 有几个拓扑示例包括在CORE中的: ~/.core/configs, 如果Core安装到文件系统中则在 /usr[/local]/share/examples/configs.
注意: 当使用 Imn 文件格式,特定文件路径: CORE_DATA_DIR = /usr/share/core, CONFDIR = ~/.core/configs
注意: 您可以使用最喜欢的文本编辑器直接编辑文件。
定制您的拓扑外观
提供多个注释工具来改变您的拓扑呈现方式。文字工具可以添加字幕。椭圆形和矩形可能绘制在后台,有助于在视觉上将节点分组在一起。
在实时演示期间,标记工具可能有助于在画布上绘制可能很快被擦除的临时注释。选择标记工具时,工具栏底部会出现大小和调色板。标记只是暂时的,不会保存在拓扑文件中。
基本节点图标可以替换为您选择的自定义图像。图标在使用具有透明背景的 GIF 或 PNG 格式时显示得最好。要更改节点的图标,请双击节点以调用其配置对话框,然后单击显示节点当前图标的节点名称右侧的按钮。
画布的背景图像可以使用 canvas 菜单中的 Wallpaper… 设置。图像可以居中、平铺或以中心做缩放来适应画布大小。例如,可以使用现有的地形、地图或网络图可以用作背景,并将CORE节点绘制在顶部。。
偏好
Preferences 对话框可以从 Edit_Menu 访问。此对话可以设置许多默认值,这些默认值存储在 ~/.core/prefs.conf 首选项文件中。