Heya,

Comments inline.

I ran through the entire procedure I use to test the setup and documented it as 
detailed as possible. Hope this helps:

#
# CentOS KVM installation
#

Base installation: 
        CentOS 6.2 Basic Server 

Upgraded to CentOS 6.4:
        # yum update

Install Virtualization tools
        # yum groupinstall Virtualization "Virtualization Client" 
"Virtualization Platform" "Virtualization Tools"

Verify Installed:
  hypervkvpd.x86_64 0:0-0.9.el6                    libguestfs.x86_64 
1:1.16.34-2.el6              libvirt.x86_64 0:0.10.2-18.el6_4.3
  libvirt-client.x86_64 0:0.10.2-18.el6_4.3        python-virtinst.noarch 
0:0.600.0-15.el6        qemu-kvm.x86_64 2:0.12.1.2-2.355.0.1.el6.centos.2
  virt-manager.x86_64 0:0.9.0-18.el6               virt-top.x86_64 
0:1.0.4-3.15.el6               virt-viewer.x86_64 0:0.5.2-18.el6_4.2
  
Modify libvirt configuration:
        Edit /etc/libvirt/libvirtd.conf
                listen_tls = 0
                listen_tcp = 1
                tcp_port = 16059
                auth_tcp = "none"
                mdns_adv = 0

        Edit /etc/sysconfig/libvirtd
                LIBVIRTD_ARGS="--listen"
  
Start libvirtd
   # /etc/init.d/libvirtd start
   # /etc/init.d/libvirtd status

Verify installation:
  # virsh capabilities 
  - Should list two guest tags with os_type hvm
  
Build and install openvswitch:
  Install build requirements:
     # yum install rpmdevtools openssl-devel kernel-devel gcc redhat-rpm-config
         
  Build packages:
     # mkdir -p ~/rpmbuild/SOURCES
     # curl -O http://openvswitch.org/releases/openvswitch-1.9.0.tar.gz
         # cp openvswitch-1.9.0.tar.gz ~/rpmbuild/SOURCES
         # cp centos64-openvswitch.patch ~/rpmbuild/SOURCES
         # tar -xzf openvswitch-1.9.0.tar.gz
         # cd openvswitch-1.9.0
         # patch -p1 < ~/rpmbuild/SOURCES/centos64-openvswitch.patch
         # rpmbuild -bb rhel/openvswitch.spec
         # rpmbuild -bb -D "kversion `uname -r`" 
rhel/openvswitch-kmod-rhel6.spec
         
  Install openvswitch:
    # yum install 
~/rpmbuild/RPMS/x86_64/kmod-openvswitch-1.9.0-1.el6.x86_64.rpm 
~/rpmbuild/RPMS/x86_64/openvswitch-1.9.0-1.x86_64.rpm
        # echo 'blacklist bridge' >> /etc/modprobe.d/blacklist.conf
        # reboot
        
  Verify installation:
    # lsmod |grep openvswitch
        # ovs-vsctl -V
        
Network design:
  cloudbr0 (Management, Storage)
    ip: 172.16.10.10/24
        gateway: 172.16.10.1
        eth0 (physical port, no vlans)
  cloudbr1 (Guest, Public)
    eth1 (physical port, vlan trunk)
        ip: none
        
Configure network interfaces:
   /etc/sysconfig/network-scripts/ifcfg-eth0
        DEVICE=eth0
        BOOTPROTO=none
        IPV6INIT=no
        NM_CONTROLLED=no
        ONBOOT=yes
        TYPE=OVSPort
        DEVICETYPE=ovs
        OVS_BRIDGE=cloudbr0

   /etc/sysconfig/network-scripts/ifcfg-eth1
        DEVICE=eth1
        BOOTPROTO=none
        IPV6INIT=no
        NM_CONTROLLED=no
        ONBOOT=yes
        TYPE=OVSPort
        DEVICETYPE=ovs
        OVS_BRIDGE=cloudbr1

   /etc/sysconfig/network-scripts/ifcfg-cloudbr0
        DEVICE=cloudbr0
        ONBOOT=yes
        DEVICETYPE=ovs
        TYPE=OVSBridge
        BOOTPROTO=static
        IPADDR=172.16.10.10
        GATEWAY=172.16.10.1
        NETMASK=255.255.255.0
        HOTPLUG=no

   /etc/sysconfig/network-scripts/ifcfg-cloudbr1
        DEVICE=cloudbr1
        ONBOOT=yes
        DEVICETYPE=ovs
        TYPE=OVSBridge
        BOOTPROTO=none
        HOTPLUG=no

   /etc/sysconfig/network
    NETWORKING=yes
        HOSTNAME=testkvm1
        GATEWAY=172.10.10.1
        
Install cloudstack-agent:
        # yum install cloudstack-agent
        
Edit /etc/cloudstack/agent/agent.properties
    network.bridge.type=openvswitch
    libvirt.vif.driver=com.cloud.hypervisor.kvm.resource.OvsVifDriver
        
Now add the host to cloudstack.
        

  
================  centos64-openvswitch.patch =====================  
diff -ru 
openvswitch-1.9.0-clean/datapath/linux/compat/include/linux/etherdevice.h 
openvswitch-1.9.0/datapath/linux/compat/include/linux/etherdevice.h
--- openvswitch-1.9.0-clean/datapath/linux/compat/include/linux/etherdevice.h   
2013-02-26 21:25:37.000000000 +0100
+++ openvswitch-1.9.0/datapath/linux/compat/include/linux/etherdevice.h 
2013-04-25 10:45:09.942027933 +0200
@@ -4,16 +4,4 @@
 #include <linux/version.h>
 #include_next <linux/etherdevice.h>

-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,36)
-static inline void eth_hw_addr_random(struct net_device *dev)
-{
-       random_ether_addr(dev->dev_addr);
-}
-#elif LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0)
-static inline void eth_hw_addr_random(struct net_device *dev)
-{
-       dev_hw_addr_random(dev, dev->dev_addr);
-}
-#endif
-
 #endif
diff -ru openvswitch-1.9.0-clean/datapath/linux/compat/include/linux/if_vlan.h 
openvswitch-1.9.0/datapath/linux/compat/include/linux/if_vlan.h
--- openvswitch-1.9.0-clean/datapath/linux/compat/include/linux/if_vlan.h       
2013-02-26 21:25:37.000000000 +0100
+++ openvswitch-1.9.0/datapath/linux/compat/include/linux/if_vlan.h     
2013-04-25 10:44:33.270023182 +0200
@@ -55,38 +55,4 @@
 #define VLAN_TAG_PRESENT       VLAN_CFI_MASK
 #endif

-#if LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0)
-static inline void vlan_set_encap_proto(struct sk_buff *skb, struct vlan_hdr 
*vhdr)
-{
-       __be16 proto;
-       unsigned char *rawp;
-
-       /*
-        * Was a VLAN packet, grab the encapsulated protocol, which the layer
-        * three protocols care about.
-        */
-
-       proto = vhdr->h_vlan_encapsulated_proto;
-       if (ntohs(proto) >= 1536) {
-               skb->protocol = proto;
-               return;
-       }
-
-       rawp = skb->data;
-       if (*(unsigned short *) rawp == 0xFFFF)
-               /*
-                * This is a magic hack to spot IPX packets. Older Novell
-                * breaks the protocol design and runs IPX over 802.3 without
-                * an 802.2 LLC layer. We look for FFFF which isn't a used
-                * 802.2 SSAP/DSAP. This won't work for fault tolerant netware
-                * but does for the rest.
-                */
-               skb->protocol = htons(ETH_P_802_3);
-       else
-               /*
-                * Real 802.2 LLC
-                */
-               skb->protocol = htons(ETH_P_802_2);
-}
-#endif
 #endif /* linux/if_vlan.h wrapper */
diff -ru openvswitch-1.9.0-clean/datapath/linux/compat/include/linux/skbuff.h 
openvswitch-1.9.0/datapath/linux/compat/include/linux/skbuff.h
--- openvswitch-1.9.0-clean/datapath/linux/compat/include/linux/skbuff.h        
2013-02-26 21:25:37.000000000 +0100
+++ openvswitch-1.9.0/datapath/linux/compat/include/linux/skbuff.h      
2013-04-25 10:43:21.167021697 +0200
@@ -245,10 +245,4 @@
 }
 #endif

-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,40)
-static inline void skb_reset_mac_len(struct sk_buff *skb)
-{
-       skb->mac_len = skb->network_header - skb->mac_header;
-}
-#endif
 #endif
diff -ru openvswitch-1.9.0-clean/rhel/openvswitch-kmod-rhel6.spec 
openvswitch-1.9.0/rhel/openvswitch-kmod-rhel6.spec
--- openvswitch-1.9.0-clean/rhel/openvswitch-kmod-rhel6.spec    2013-02-26 
21:25:52.000000000 +0100
+++ openvswitch-1.9.0/rhel/openvswitch-kmod-rhel6.spec  2013-04-25 
10:40:41.039023915 +0200
@@ -22,6 +22,7 @@
 Source0:        %{oname}-%{version}.tar.gz
 BuildRoot:      %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
 BuildRequires:  %kernel_module_package_buildreqs
+Patch0:                centos64-openvswitch.patch

 # Without this we get an empty openvswitch-debuginfo package (whose name
 # conflicts with the openvswitch-debuginfo package for OVS userspace).
@@ -43,6 +44,7 @@
 %prep

 %setup -n %{oname}-%{version}
+%patch0 -p1

 %build
 for flavor in %flavors_to_build; do
================  centos64-openvswitch.patch =====================


> -----Original Message-----
> From: Angeline Shen [mailto:angeline.s...@citrix.com]
> Sent: Thursday, April 25, 2013 5:31 AM
> To: '<dev@cloudstack.apache.org>'; Hugo Trippaers; Sheng Yang; Edison Su
> Subject: RE: https://issues.apache.org/jira/browse/CLOUDSTACK-101 OVS
> support in KVM
> 
> Hugo:
> 
> For your configuration example  :
> 
> 
> # The physical interface: eth1
> DEVICE=eth1
> BOOTPROTO=none
> HWADDR=BC:30:5B:D4:16:3C
> IPV6INIT=no
> #MTU=1500
> NM_CONTROLLED=no
> ONBOOT=yes
> TYPE=OVSPort
> DEVICETYPE=ovs
> OVS_BRIDGE=br0
> 
> 
> # The bridge interface: br0
> DEVICE=br0
> ONBOOT=yes
> DEVICETYPE=ovs
> TYPE=OVSBridge
> BOOTPROTO=static
> IPADDR= 10.223.58.195
> GATEWAY = 10.223.58.193
> NETMASK=255.255.255.192
> HOTPLUG=no
> 
> QUESTION: will commands to configure openvswitch network interfaces be
> as follows:
> 
> ovs-vsctl add-br br0
> ovs-vsctl add-port br0 eth1
>

The redhat network configuration should take care of creating all the bridges 
and linking the ports. But yes the configuration above should have the same 
effect as these two commands.


> 
> Thanks
> 
> -----Original Message-----
> From: Angeline Shen
> Sent: Wednesday, April 24, 2013 1:13 PM
> To: <dev@cloudstack.apache.org>; Hugo Trippaers; Sheng Yang; Edison Su
> Subject: RE: https://issues.apache.org/jira/browse/CLOUDSTACK-101 OVS
> support in KVM
> 
> Hugo:
> 
> Please review my updates to
> https://issues.apache.org/jira/browse/CLOUDSTACK-101 .
> 
> The latest experiment I conducted per your instructions  is as follows:
> 
>  ovs  Host    10.223.58.195          gateway     10.223.58.193          other 
> host on
> same gateway but not in ovs setup   10.223.58.194
> 
> On ovs host 10.223.58.195 , After I changed /etc/sysconfig/network-
> scripts/ifcfg-eth1 and  /etc/sysconfig/network-scripts/ifcfg-cloudbr to your
> instructions, service network restart ,
> 
> the ovs host can now ONLY ping its own gateway 10.223.58.193 and any host
> in same subnet, but CANNOT reach anything beyond the gateway
> 10.223.58.193.
> 
> 1. /etc/sysconfig/network-scripts/ifcfg-eth1:
> 
> DEVICE=eth1
> BOOTPROTO=none
> HWADDR=BC:30:5B:D4:16:3C
> IPV6INIT=no
> #MTU=1500
> NM_CONTROLLED=no
> ONBOOT=yes
> #TYPE=Ethernet
> TYPE=OVSPort
> DEVICETYPE=ovs
> OVS_BRIDGE=cloudbr
> #UUID="0142ba15-de11-499c-a1ba-82837b30f890"
> #IPADDR=10.223.58.195
> #NETMASK=255.255.255.192
> #GATEWAY=10.223.58.193
> #DNS1=10.223.110.254
> #USERCTL=yes
> #IPV4_FAILURE_FATAL=yes
> #DEFROUTE=yes
> #NAME="System eth1"
> 
> 2. /etc/sysconfig/network-scripts/ifcfg-cloudbr:
> 
> DEVICE=cloudbr
> ONBOOT=yes
> DEVICETYPE=ovs
> TYPE=OVSBridge
> BOOTPROTO=static
> IPADDR=10.223.58.195
> GATEWAY=10.23.58.193
> NETMASK=255.255.255.0
> HOTPLUG=no
> 
> 3. On host 10.223.58.195, service network restart
> 
> 
> 4. on host 10.223.58.195:
> 
> [root@Rack3Host16 ~]# ip route
> 10.223.58.0/24 dev cloudbr proto kernel scope link src 10.223.58.195
> 169.254.0.0/16 dev cloud0 proto kernel scope link src 169.254.0.1
> 169.254.0.0/16 dev eth1 scope link metric 1002
> 169.254.0.0/16 dev cloudbr scope link metric 1015
> 
> 5. It can reach its gateway & other hosts on same gateway:
> 
> [root@Rack3Host16 ~]# ping 10.223.58.193 PING 10.223.58.193
> (10.223.58.193) 56(84) bytes of data.
> 64 bytes from 10.223.58.193: icmp_seq=1 ttl=64 time=7.43 ms
> 64 bytes from 10.223.58.193: icmp_seq=2 ttl=64 time=2.82 ms
> 64 bytes from 10.223.58.193: icmp_seq=3 ttl=64 time=1.06 ms ^C
> --- 10.223.58.193 ping statistics ---
> 3 packets transmitted, 3 received, 0% packet loss, time 2364ms rtt
> min/avg/max/mdev = 1.061/3.771/7.430/2.685 ms
> [root@Rack3Host16 ~]# ping 10.223.58.194 PING 10.223.58.194
> (10.223.58.194) 56(84) bytes of data.
> 64 bytes from 10.223.58.194: icmp_seq=1 ttl=64 time=0.399 ms
> 64 bytes from 10.223.58.194: icmp_seq=2 ttl=64 time=0.181 ms ^C
> --- 10.223.58.194 ping statistics ---
> 2 packets transmitted, 2 received, 0% packet loss, time 1446ms rtt
> min/avg/max/mdev = 0.181/0.290/0.399/0.109 ms
> 
> [root@Rack3Host16 ~]# traceroute 10.223.58.194 traceroute to 10.223.58.194
> (10.223.58.194), 30 hops max, 60 byte packets
>  1 10.223.58.194 (10.223.58.194) 0.922 ms 0.851 ms 0.830 ms
> 
> [root@Rack3Host16 ~]# traceroute 10.223.58.193 traceroute to 10.223.58.193
> (10.223.58.193), 30 hops max, 60 byte packets
>  1 10.223.58.193 (10.223.58.193) 7.017 ms 12.506 ms 7.675 ms
> 
> 6. host CANNOT reach anything outside of its subnet:
> 
> [root@Rack3Host16 ~]# ping 10.223.195.114
> connect: Network is unreachable
> 
> [root@Rack3Host16 ~]# ping www.google.com
> ping: unknown host www.google.com
> 
> [root@Rack3Host16 ~]# ping 8.8.8.8
> connect: Network is unreachable
> 
> [root@Rack3Host16 ~]# traceroute 8.8.8.8 traceroute to 8.8.8.8 (8.8.8.8), 30
> hops max, 60 byte packets
> connect: Network is unreachable
> 
> 7. [root@Rack3Host16 ~]# ifconfig
> cloudbr Link encap:Ethernet HWaddr BC:30:5B:D4:16:3C
>           inet addr:10.223.58.195 Bcast:10.223.58.255 Mask:255.255.255.0
>           inet6 addr: fc00:2::be30:5bff:fed4:163c/64 Scope:Global
>           inet6 addr: fe80::68f7:52ff:fe03:a744/64 Scope:Link
>           UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
>           RX packets:46945 errors:0 dropped:0 overruns:0 frame:0
>           TX packets:549 errors:0 dropped:0 overruns:0 carrier:0
>           collisions:0 txqueuelen:0
>           RX bytes:39235509 (37.4 MiB) TX bytes:102773 (100.3 KiB)
> 
> cloud0 Link encap:Ethernet HWaddr AA:81:04:5F:5E:4A
>           inet addr:169.254.0.1 Bcast:169.254.255.255 Mask:255.255.0.0
>           inet6 addr: fe80::a881:4ff:fe5f:5e4a/64 Scope:Link
>           UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
>           RX packets:0 errors:0 dropped:0 overruns:0 frame:0
>           TX packets:23 errors:0 dropped:0 overruns:0 carrier:0
>           collisions:0 txqueuelen:0
>           RX bytes:0 (0.0 b) TX bytes:4201 (4.1 KiB)
> 
> eth1 Link encap:Ethernet HWaddr BC:30:5B:D4:16:3C
>           inet6 addr: fe80::be30:5bff:fed4:163c/64 Scope:Link
>           UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
>           RX packets:48123 errors:0 dropped:0 overruns:0 frame:0
>           TX packets:532 errors:0 dropped:0 overruns:0 carrier:0
>           collisions:0 txqueuelen:1000
>           RX bytes:39518352 (37.6 MiB) TX bytes:101960 (99.5 KiB)
>           Interrupt:16 Memory:da000000-da012800
> 
> lo Link encap:Local Loopback
>           inet addr:127.0.0.1 Mask:255.0.0.0
>           inet6 addr: ::1/128 Scope:Host
>           UP LOOPBACK RUNNING MTU:16436 Metric:1
>           RX packets:340 errors:0 dropped:0 overruns:0 frame:0
>           TX packets:340 errors:0 dropped:0 overruns:0 carrier:0
>           collisions:0 txqueuelen:0
>           RX bytes:46264 (45.1 KiB) TX bytes:46264 (45.1 KiB)
> 
> 8. [root@Rack3Host16 ~]# brctl show
> bridge name bridge id STP enabled interfaces
> cloud0 /sys/class/net/cloud0/bridge: No such file or directory
> /sys/class/net/cloud0/bridge: No such file or directory
> /sys/class/net/cloud0/bridge: No such file or directory
> /sys/class/net/cloud0/bridge: No such file or directory
> /sys/class/net/cloud0/bridge: No such file or directory
> /sys/class/net/cloud0/bridge: No such file or directory
> /sys/class/net/cloud0/bridge: No such file or directory
> /sys/class/net/cloud0/bridge: No such file or directory
> /sys/class/net/cloud0/bridge: No such file or directory
> /sys/class/net/cloud0/bridge: No such file or directory
> /sys/class/net/cloud0/bridge: No such file or directory
> /sys/class/net/cloud0/bridge: No such file or directory 0000.aa81045f5e4a no
> cloudbr /sys/class/net/cloudbr/bridge: No such file or directory
> /sys/class/net/cloudbr/bridge: No such file or directory
> /sys/class/net/cloudbr/bridge: No such file or directory
> /sys/class/net/cloudbr/bridge: No such file or directory
> /sys/class/net/cloudbr/bridge: No such file or directory
> /sys/class/net/cloudbr/bridge: No such file or directory
> /sys/class/net/cloudbr/bridge: No such file or directory
> /sys/class/net/cloudbr/bridge: No such file or directory
> /sys/class/net/cloudbr/bridge: No such file or directory
> /sys/class/net/cloudbr/bridge: No such file or directory
> /sys/class/net/cloudbr/bridge: No such file or directory
> /sys/class/net/cloudbr/bridge: No such file or directory 0000.bc305bd4163c
> no
> 
> 
> -----Original Message-----
> From: Sheng Yang [mailto:sh...@yasker.org]
> Sent: Wednesday, April 24, 2013 12:59 PM
> To: Hugo Trippaers
> Cc: <dev@cloudstack.apache.org>
> Subject: Re: https://issues.apache.org/jira/browse/CLOUDSTACK-101 OVS
> support in KVM
> 
> Thank you Hugo!
> 
> --Sheng
> 
> 
> On Wed, Apr 24, 2013 at 12:16 PM, Hugo Trippaers <
> htrippa...@schubergphilis.com> wrote:
> 
> >  Hey Sheng,
> >
> >  Sure thing, I'm trying to help Angeline already, but it's quite a
> > complex setup.
> >
> >  I'll try to write down some detailed instructions.
> >
> >  Cheers,
> >
> >  Hugo
> >
> > Sent from my iPhone
> >
> > On 24 apr. 2013, at 19:56, "Sheng Yang" <sh...@yasker.org> wrote:
> >
> >   Hi Hugo,
> >
> >  Could you help with KVM OVS setup? I cannot find much information on
> > the our wiki about OVS on KVM.
> >
> >  --Sheng
> >
> >  On Fri, Apr 19, 2013 at 8:14 PM, Angeline Shen
> <angeline.s...@citrix.com>wrote:
> >
> >> ASF 4.1  cloudstack  with openvswitch  support  for   RHEL 6.3   KVM test
> >>  configuration setup:
> >>
> >> After completing
> >> http://nullworks.wordpress.com/2012/09/19/kvm-and-openvswitch-on-
> cent
> >> os-6-3-minimal/  to setup RHEL 6.3 openvswitch, encountered following
> >> problems:
> >>
> >> 1. In this scenario, after service openvswitch start, host is still
> >> up running but completely lost connection to network.
> >>
> >> [root@Rack3Host16 /]# service openvswitch start Inserting brcompat
> >> module [ OK ] Starting ovsdb-server [ OK ] Configuring Open vSwitch
> >> system IDs [ OK ] Starting ovs-vswitchd [ OK ] Starting ovs-brcompatd
> >> [ OK ] iptables already has a rule for gre, not explicitly enabling.
> >> [root@Rack3Host16 /]#
> >>
> >>
> >> 2. content of various files:
> >>
> >> /etc/sysconfig/network-scripts/ifcfg-ovsbr1 :
> >> DEVICE=ovsbr1
> >> ONBOOT=yes
> >> DEVICETYPE=ovs
> >> TYPE=OVSBridge
> >> BOOTPROTO=static
> >> IPADDR=10.223.58.195
> >> GATEWAY=10.223.58.193
> >> NETMASK=255.255.255.0
> >> HOTPLUG=no
> >>
> >>
> >> QUESTION:    Is
> >> http://nullworks.wordpress.com/2012/09/19/kvm-and-openvswitch-on-
> centos-6-3-minimal/
> >>         Valid configuration instructions for   openvswitch   RHEL 6.3
> >>  or are there other updated  correct configuration steps?
> >>
> >> Thanks
> >>
> >>
> >

Reply via email to