From d849ec78de728ef9a2d383b92ccfeabf40f8f1d0 Mon Sep 17 00:00:00 2001 From: Patrick Williams Date: Wed, 17 Aug 2016 14:59:38 -0500 Subject: Squashed 'import-layers/meta-virtualization/' content from commit c4a1711 Change-Id: I42132e4f0aef12ec265e74d95f489a6409e22f46 git-subtree-dir: import-layers/meta-virtualization git-subtree-split: c4a1711dd31659b027c70c07e4ef6da98591ac95 Signed-off-by: Patrick Williams --- .../meta-virtualization/docs/openvswitch.txt | 96 ++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 import-layers/meta-virtualization/docs/openvswitch.txt (limited to 'import-layers/meta-virtualization/docs/openvswitch.txt') diff --git a/import-layers/meta-virtualization/docs/openvswitch.txt b/import-layers/meta-virtualization/docs/openvswitch.txt new file mode 100644 index 000000000..4410d27e4 --- /dev/null +++ b/import-layers/meta-virtualization/docs/openvswitch.txt @@ -0,0 +1,96 @@ +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). -- cgit v1.2.1