When connecting to a real network using other connection types than port forwarding, Simics needs low-level access to the simulation host's Ethernet interfaces to send and receive packets. However, operating systems do not usually allow user programs low-level access to Ethernet interfaces. You therefore have to configure the simulation host to allow Simics low-level access.
This can be done in two ways. You can give administrative privileges to a small helper program called openif, which will access the simulation host's Ethernet interface for Simics. This is called raw access in Simics. Or, you can create a virtual Ethernet (TAP) interface that Simics can access with user privileges. This is called TAP access in Simics.
Different connection types can use different access types. Ethernet bridging connections can use either raw or TAP access, IP routing connections can only use raw access, and host connections can only use TAP access.
To tell Simics to use raw or TAP access when creating an Ethernet bridging connection, specify raw or tap as the host-access argument to connect-real-network-bridge.
With raw access, Simics uses a small helper program, openif, to access the simulation host's Ethernet interfaces. openif is launched from Simics and executes with administrative privileges. This way you do not need administrative privileges to connect Simics to the real network once openif has been installed. Simics Installation Guide contains instructions for installing openif.
If openif is not installed in its default location, you can use the command network-helper to tell Simics where to find it. This command needs to be issued before connecting to the real network, for example:
simics> network-helper /usr/local/sbin/openif
Usually, an Ethernet interface only receives packets addressed to the host itself, and ignores other packets. However, when you use Ethernet bridging without MAC address translation and raw access, the interface also needs to receive packets addressed to the simulated machines. This can be achieved be enabling promiscuous mode on the interface. On Linux, this is done by specifying the promisc argument to ifconfig, which requires administrative privileges. For example, if you want to use the eth0 interface:
computer# ifconfig eth0 promisc
Enabling promiscuous mode on an interface means that the operating system will have to process all incoming packets. On a network with a lot of traffic, this may therefore cause a performance degradation on the simulation host. To disable promiscuous mode when it is no longer needed, use the -promisc argument to ifconfig:
computer# ifconfig eth0 -promisc
With TAP access Simics will connect the simulated network to a virtual Ethernet (TAP) interface provided by the operating system. Accessing the TAP interface does not require administrative privileges, so once the TAP interface has been configured you can connect Simics to the real network without administrative privileges.
The TAP interface can either be bridged to a real Ethernet interface to create an Ethernet bridging connection, or configured with an IP address to create a host connection. Either way, creating a TAP interface that Simics can use is done in two simple steps. These commands require administrative privileges:
computer# chmod 666 /dev/net/tun
computer# tunctl -u joe -t sim_tap0 Set 'sim_tap0' persistent and owned by uid 4711
To remove a TAP interface when you are done with it, use the -d argument to tunctl. Again, this requires administrative privileges:
computer# tunctl -d sim_tap0 Set 'sim_tap0' nonpersistent