Simics 支持4种类型的连接方式使虚拟的目标板和真实的物理网络互相联通。
1). 端口转发:Port forwarding
2). 二层桥接:Ethernet bridging connection
3). 三层路由:IP routing connection
4). 主机直连:Host connection
其中最方便常用的便是主机直连方式了。这种方式通过 TAP 接口来实现虚拟的目标板和真实的物理网络的连接。
以 Ubuntu 为例,首先安装 tunctl 工具。
sudo apt-get install uml-utilities
现在大部分 Linux 发行版文件系统都自带了 /dev/net/tun 设备。
确保 /dev/net/tun 对所有程序可读写。
sudo chmod 0666 /dev/net/tun
建立一个 名为 sim_tap0 的 TAP 接口,并允许用户名为 foobar 的帐号进行操作。
这里 foobar 帐号是使用 Simics 程序的用户。
sudo tunctl -t sim_tap0 -u foobar
配置 sim_tap0 网络接口的 IP 地址和子网掩码并激活。
sudo ifconfig sim_tap0 10.10.0.10 netmask 255.255.255.0 up
打开 Simics 命令行窗口,输入以下命令实现联通:
simics> connect-real-network-host interface = sim_tap0
之后就可以从主机端或 Simics 虚拟机中实现任何形式的网络通信了,如 ping、FTP 等。
PS:上述实例中给主机 TAP 接口分配了 10.10.0.x 网段的IP 地址,这个地址要和 Simics 的 Service Node 模拟的网关在同一网段内。
该网关 IP 地址在 Simics-Base 安装目录所在的 target/common 目录下的 add-eth-link.include 文件中定义。
if not defined service_node_ip_address { $service_node_ip_address = "10.10.0.1" }