mirror of
git://git.yoctoproject.org/meta-virtualization.git
synced 2025-07-19 03:59:48 +02:00

-Uprev to 1.10 -removed vswitch_test.sh -added openvswitch.txt. Signed-off-by: Paul Barrette <paul.barrette@windriver.com> Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
97 lines
3.0 KiB
Plaintext
97 lines
3.0 KiB
Plaintext
Simple setup for connecting openvswitch to qemu/kvm
|
|
===================================================
|
|
This example brings up openvswitch using a private network.
|
|
|
|
Preliminary notes
|
|
=================
|
|
1. Make sure to build kernel support for openvswitch as a module. The
|
|
openvswitch init scripts expect to load a module and upon success
|
|
continue to setup the switch. If openvswitch is compiled
|
|
statically, the init scripts not load the ovs-vswitchd daemon
|
|
and none of the configured bridges will show up in the interfaces
|
|
table (ifconfig). You can get around this limiation by running the
|
|
following by hand:
|
|
# ovs-vswitchd --pidfile --detach
|
|
|
|
2. Verify that ovs-vswitchd is running before proceeding:
|
|
# /etc/init.d/openvswitch-switch status
|
|
ovsdb-server is running with pid 1867
|
|
ovs-vswitchd is running with pid 1877
|
|
|
|
3. A kernel and rootfs is required for qemu bring up.
|
|
|
|
Qemu Setup
|
|
==========
|
|
The host requires a /etc/qemu-ifup script to setup the bridging and tap
|
|
devices. Qemu will invoke this qemu-ifup script at startup. Here is
|
|
an example script:
|
|
$ cat /etc/qemu-fup
|
|
#!/bin/sh
|
|
# the tap is dynamically assigned and passed into this script
|
|
# as a parameter
|
|
TAP=$1
|
|
|
|
# Note: if booting over NFS, once the $ETH0 device is added to the bridge,
|
|
# your host will be unusable. In that case, setup networking
|
|
# init scripts appropriately and change the following to work
|
|
# with it.
|
|
ETH0="eth1"
|
|
NETMASK=255.255.255.0
|
|
IP=192.168.1.1
|
|
GATEWAY=
|
|
SWITCH=ovsbr0
|
|
if [ -n "$TAP" ];then
|
|
ifconfig $TAP up
|
|
ifconfig $SWITCH down &>/dev/null
|
|
ovs-vsctl del-br $SWITCH
|
|
ovs-vsctl add-br $SWITCH
|
|
ifconfig $ETH0 0.0.0.0
|
|
ifconfig $SWITCH $IP up netmask $NETMASK
|
|
#-- external access not required for this test.
|
|
#route add default gw $GATEWAY
|
|
ovs-vsctl add-port $SWITCH $ETH0
|
|
ovs-vsctl add-port $SWITCH $TAP
|
|
exit 0
|
|
else
|
|
echo "$0: No tap device"
|
|
exit 1
|
|
fi
|
|
|
|
Start Qemu
|
|
==========
|
|
This example will bring up qemu with a tap network interface.
|
|
Note: this command must be run as root due to the networking setup.
|
|
|
|
$ qemu-system-x86_64 -nographic -k en-us -m 1024 \
|
|
-net nic,macaddr=1a:46:0b:ca:bc:7a,model=virtio \
|
|
-net tap -enable-kvm\
|
|
-kernel /opt/dpdk-guest-kernel \
|
|
-append 'root=/dev/vda ro console=ttyS0' \
|
|
-drive file=/opt/intel-xeon-core-ovp-kvm-preempt-rt-dist.ext3,cache=none,if=virtio
|
|
|
|
Once the guest OS is up and running, configure the quest network interface:
|
|
$ ifconfig eth0 192.168.1.10
|
|
|
|
Ping the bridge:
|
|
$ ping 192.168.1.1
|
|
|
|
From the host, view the bridged network:
|
|
$ ovs-vsctl show
|
|
c1212b96-ef49-4a8e-b598-09b05b854dd0
|
|
Bridge "ovsbr0"
|
|
Port "tap0"
|
|
Interface "tap0"
|
|
Port "eth1"
|
|
Interface "eth1"
|
|
Port "ovsbr0"
|
|
Interface "ovsbr0"
|
|
type: internal
|
|
|
|
At this point, openvswitch is up and running. If you want external
|
|
network access, you need to set a GATEWAY in the qemu-ifup script and
|
|
make sure the external device is part of the bridge.
|
|
|
|
Note:
|
|
Proper setup will require a /etc/qemu-ifdown script to tear down the
|
|
bridge and interfaces. (not provided here).
|