openvswitch.txt 3.01 KiB
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
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