This document describes how to run Netstack3, as well as a few possible dev workflows. The instructions are for how to set up QEMU, but are also applicable to real hardware.
The following instructions here are for running Netstack3 alongside the default netstack on a separate interface. This is currently the recommended method of running Netstack3.
First, set up two interfaces for QEMU to use (you only need to do this once per boot of host machine):
sudo ip tuntap add dev qemu mode tap user $USER sudo ip tuntap add dev qemu-extra mode tap user $USER sudo ifconfig qemu up sudo ifconfig qemu-extra up
Assign an IPv4 address for the qemu-extra
interface so that you can ping from it later:
sudo ifconfig qemu-extra 192.168.4.1 netmask 255.255.255.0 up
Start Qemu with networking support:
fx qemu -N
At this point you should be able to fx shell
and resolve the default netstack interface address with fx get-device-addr
.
enclosed_runner
SetupFollow the instructions in the enclosed_runner
documentation to run Netstack3 on the second ethernet interface. Note that the instructions above assigned 192.168.4.1/24
to qemu-extra
so the address assigned to Netstack3 through enclosed_runner
should also be in this subnet. If you're successful, you should be able to ping the address assigned to Netstack3 (presumably 192.168.4.x
) from the host machine.
The following instructions are for running Netstack3 as a replacement for the default netstack.
fx set ... --args=use_netstack3=true
NOTE: At the time of this writing, Netstack3 is not complete enough to allow for dynamic package download and install. So make sure that every package that you'll need is included in your fx set
line using the --with-base
argument, which will have those packages be part of the base system. Like this:
fx set core.x64 --with-base //path/to/targetA \ --with-base //path/to/targetB \ --args=use_netstack3=true
Once you've done this setup, the netstack should be set up. You can run fuchsia however you normally would, then use net
to set up the interface:
net if add /dev/class/ethernet/000 net if addr add 1 192.168.1.39 24 net fwd add-device 1 192.168.1.0 24
Once you've done this, you can check that Netstack3 is reachable by pinging it from your host machine:
ping -I qemu-extra 192.168.1.39 -c 1
This is painfully slow right now - wesleyac@ is working on a solution that pushes only the package, instead of rebuilding the image and restarting qemu each time, but that's further off.