8个示例的配置描述如下:
示例 | 容器数量 | 模型 | 传输类型 | 描述 |
---|---|---|---|---|
0 | 2 | Bypass | Virtual | 介绍仿真器子系统和应用程序 |
1 | 10 | RFPipe | Virtual | 介绍事件产生,EMANE shell和一般物理层概念 |
2 | 7 | RF Pipe | Virtual | 介绍RF Pipe无线电模型 |
3 | 10 | IEEE 802.11abg | Virtual | 介绍 IEEE802.11abg无线电模型 |
5 | 4 | IEEE 802.11abg, RF Pipe | Virtual | 理解仿真器光谱监测和噪音处理 |
6 | 4 | RF Pipe | Virtual | 如何使用物理层天线轮廓 |
7 | 10 | Comm Effect | Raw | 介绍Comm Effect实用程序模型和黑盒测试 |
8 | 19 | TDMA | Virtual | 介绍TDMA事件调度程序无线电模型 |
1. 教程测试流程
Makefile用于从一系列模板文件为每个演示生成配置的部分。 使用这些文件中的信息以及Makefile本身中定义的变量,可以创建演示启动和演示停止脚本,该脚本仅使用适当的演示参数调用 scripts/ democtl-host scripts。
democtl-host脚本将使用lxc-execute启动许多LXC容器,为每个容器调用 scripts/demo-init scripts。每个demo-init 脚本实例都知道其关联的NODEID,并在演示目录中查找特定文件,以确定要运行哪些应用程序和服务。
文件 | 如果存在则操作 |
---|---|
platform<NODEID>.xml | 运行 emane 并用作配置输入文件 |
transportdaemon<NODEID>.xml | 运行 emanetransportd 并用作配置输入文件 |
eventdaemon<NODEID>.xml | 运行 emaneventd 并用作配置输入文件 |
iperf | 运行 iperf 并用作配置输入文件 |
iperf<NODEID> | 运行 iperf 并用作配置输入文件,忽略 iperf 输入文件(如果存在)。 |
mgen | 运行 perfmgen 并用作配置输入文件 |
mgen<NODEID> | 运行 megen 并用作配置输入文件,忽略 megen 输入文件(如果存在)。 |
routing.conf | 运行 olsrd 并用作配置输入文件 |
routing<NODEID>.conf | 运行 olsrd 并用作配置输入文件,忽略 olsrd 输入文件(如果存在)。 |
node-prestart | 在启动任何其他应用程序之前运行此脚本 |
node-prestart<NODEID> | 在启动任何其他应用程序之前运行此脚本,忽略 node-prestart (如果存在)。 |
node-preapplication | 在启动所有EMANE组件之后,但在启动任何其他应用程序之前,运行此脚本。 |
node-preapplication<NODEID> | 在启动所有EMANE组件之后,但在启动任何其他应用程序之前,运行此脚本。忽略 node-preapplication (如果存在)。 |
node-poststart | 启动所有程序后运行此脚本。 |
node-poststart<NODEID> | 启动所有程序后运行此脚本。忽略 node-poststart (如果存在)。 |
otestpointd<NODEID>.xml | 运行otestpointd并用作配置输入文件。 |
otestpoint-recorder<NODEID>.xml | 运行otestpoint记录器并用作配置输入文件。 |
每个LXC容器测试节点将把所有日志、pid和uuid文件写入持久文件/var/{log,run}中。
同样,demctl-host
脚本使用一些现有的文件来进行额外的操作。
文件 | 如果存在则操作 |
---|---|
platform.xml | 运行 emane 并用作配置输入文件 |
transportdaemon.xml | 运行 transportdaemon 并用作配置输入文件 |
eventservice.xml | 运行 eventservice 并用作配置输入文件 |
host-poststart | 启动所有程序后运行此脚本 |
host-prestop | 在停止任何操作之前运行该脚本 |
otestpoint-broker.xml | 运行otestpoint-broker并用作配置输入文件 |
这些应用程序生成的所有日志、pid和uuid文件都被写入persist/host/var/{log,run}。
2. 运行演示
cd emane-tutorial
cd 2
sudo ./demo-start
要停止演示,请从适当的演示目录运行 demo-stop
。
cd 2
sudo ./demo-stop
3. LXC测试节点拓扑
每个LXC容器实例都有两个接口:eth1和eth2。eth1接口用作后通道控制接口以及空中和事件通道接口。
测试节点 | 反向信道地址 | 无线电接口地址 |
---|---|---|
1 | 10.99.0.1 | 10.100.0.1 |
2 | 10.99.0.2 | 10.100.0.2 |
3 | 10.99.0.3 | 10.100.0.3 |
4 | 10.99.0.4 | 10.100.0.4 |
5 | 10.99.0.5 | 10.100.0.5 |
6 | 10.99.0.6 | 10.100.0.6 |
7 | 10.99.0.7 | 10.100.0.7 |
8 | 10.99.0.8 | 10.100.0.8 |
9 | 10.99.0.9 | 10.100.0.9 |
10 | 10.99.0.10 | 10.100.0.10 |
关于反向信道(back channel ):在通信系统中,反向信道,也叫返回信道或返回链路,是从用户终端到中心集线器的传输链路。
除了示例7之外,所有示例都将在名为 emane0 的容器中创建一个虚拟接口(vif),用作无线电接口。示例7将把 eth1 配置为无线电接口。
在主机上,可以使用 10.99.0.0/24 网络(node-<NODEID> 主机名
)装入一个容器。 在每个容器中,都可以使 用10.100.0.0/24 网络(无线主机名)通过仿真路由通信。
演示开始时,democtl-host 脚本将创建一个名为 emanenode0 的网桥。对应于容器 eth1 接口的所有容器 Vif 将被添加到该网桥。
[me@host 2]$ ifconfig emanenode0
emanenode0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.99.0.100 netmask 255.255.255.0 broadcast 0.0.0.0
inet6 fe80::fc7b:68ff:fe40:1f3a prefixlen 64 scopeid 0x20<link>
ether fe:07:f5:6c:f1:f9 txqueuelen 0 (Ethernet)
RX packets 135828 bytes 46012434 (43.8 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 96515 bytes 9342380 (8.9 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[me@host 2]$ brctl show emanenode0
bridge name bridge id STP enabled interfaces
emanenode0 8000.fe07f56cf1f9 no veth1.1
veth10.1
veth2.1
veth3.1
veth4.1
veth5.1
veth6.1
veth7.1
veth8.1
veth9.1
当使用 ./demo-stop 停止演示时,所有容器及其关联的 vif 和 emanenode0 网桥均被销毁。